在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一、頁面保存狀態方式 Http協議是無狀態的,從客戶端到服務器的連接可以在每個請求之后關閉。但是一般需要把一些客戶端信息從一個頁面傳送給另一個頁面,這時需要保存狀態。頁面保存狀態方式如下:
二、客戶端狀態與服務器端狀態的缺點: 三、客戶端狀態管理
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs"
Inherits="_Default" EnableViewState="false" %>
我們也可以單獨設置控件的EnableViewState屬性,這樣無論頁面進行了什麼配置,都可以使用控件配置的值。 我們也可以將定製的數據存儲在ViewState中。代碼如下:
ViewState["SaveValue"] = "Need Save Value";
在發送給客戶的HTML代碼中,整個頁面的ViewState存儲在一個隱藏的字段中。如下面代碼:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwULLTE5MTkwMTIzNDNkZKJI5cFHnBD9NmyabrvirIrUDjIH" /> 使用隱藏字段的優點是,每個瀏覽器都可以使用這個特性,用戶不關閉它。 3.2、cookie Cookie可以是臨時的,僅在一個瀏覽器會話中有效,也可以存儲在客戶端的磁盤上。我們可以使用Expires屬性設置cookie有效日期。注:瀏覽器只能為每個服務器存儲20個cookie,為所有服務器存儲300個cookie。達到這個極限后,就刪除有一段時間未用的cookie。Cookie不能存儲多於4 K的數據。
//實例化HttpCookie
HttpCookie cookie = new HttpCookie("cookieName"); //增加cookie中的值 cookie.Values.Add("CookieValueName", "CookieValue"); //Expires:获取或设置作为 DateTime 的 Cookie 过期日期和时间。 cookie.Expires = DateTime.Now.AddDays(1); /* Response:获取与该 Page 对象关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。 */ Response.Cookies.Add(cookie); 客戶端從服務器上請求一個頁面時,這個服務器的cookie就可以在客戶端上使用,並作為HTTP請求的一部分發送給服務器。要在Asp.Net頁面中讀取cookie,可以訪問HttpRequest對象中的cookie集合。 與Http響應一樣, Page業也有一個Request屬性返回HttpRequest類型的對像。Cookies屬性返回HttpCookieCollection,它可以用於於讀取客戶端發送的cookie。可以用索引符通過其名稱來訪問cookies,然后使用HttpCookie的Values屬性從cookie中獲取值。
//得到Cookie中的值
HttpCookie hcCoo = Request.Cookies["cookieName"]; string sCookieValue = cookie.Values["CookieValueName"]; 四、服務器端狀態管理 4.1會話(session) 會話狀態可以存儲在HttpSessionState對像中。與當前Http環境相關的會話狀態對像可以使用Page類的Session屬性來訪問。在 Session_Start()事件處理程序中,可以初始化會話變量。 我們需要對Session運行前後作一些處理時,或以使用Global Application類。用Website->Add New ite->Global Application Class創建Globla Application類。此文件默認名為global.asax。 會話狀態存儲在HttpSessionState對像中。與當前相關的會話狀態對像可以使用Page類的Session屬性來訪問。 要把客戶羰與其會話變更關聯起來,Asp.net默認使用一個監時cookie和一個會話標識符。Asp.net 2.0也支持沒有cookie的會話,其中的Url標識符用於把http請求映射到同一個會話。 4.2應用程序狀態(Application) 如果數據應在多個客戶端共享,就可以使用應用程序狀態。應用程序狀態的使用方式與會話狀態非常類似。應用程序狀態使用HttpApplicationState類,通過Page類的Appliction屬性可以訪問它。 不要在應用程序狀態中存儲大多的數據。因為應用程序狀態需要服務器資源,直到服務器停止或重啟之后才釋放資源。 4.3高速緩存(Cache) 高速緩存是服務器端狀態,它類似於應用程序狀態,因為它在所有客戶端上共享。高速緩存與應用程序狀態的區別是,高速緩存要靈活得多:有許多定義狀態何時失效方式。 高速緩存,需要使用System.Web.Caching命名空間。給高速緩存添加對像的過程如下:Page類的Cache屬性返回一個Cache對像。使用Cache類的Add()方法增加把任意對像。 其它: 轉自:http://www.cnblogs.com/sojay/archive/2008/03/26/1122489.html
1.Application: 用于保存所有用户共用的数据信息。 在Asp.Net中类似的配置数据最好保存在Web.config文件中。如果使用Application对象,一个需要考虑的问题是任何写操作都要在 Application_OnStart事件(global.asax)中完成。尽管使用Application.Lock和 Application.Unlock方法来避免写操作的同步,但是它串行化了Application对象的请求,当网站访问量大的时候会产生严重的性能 瓶颈。因此最好不要用此对象保存大的数据集。 使用如下:
使用如下:
使用如下:
使用如下:
使用如下:
使用如下:
使用如下: http://localhost/User.aspx?UserNameID=1000&LevelID=100 当跳转到User.aspx后,可以通过下面代码获得传递的信息: ================================================================= Application 1. Application用来保存所有用户共用的信息 2. 在Asp时代,如果要保存的数据在应用程序生存期内不会或者很少发生改变,那么使用Application是理想的选择。但是在Asp.net开发环境中我们把类似的配置数据放在Web.config中。 3. 如 果要使用Application 要注意的是所有的写操作都要在Application_OnStart事件中完成(global.Asax),尽管可以使用 Application.Lock()避免了冲突,但是它串行化了对Application的请求,会产生严重的性能瓶颈。 4. 不要使用Application保存大数据量信息 5. 代码:Application[“UserID”]=”test”; String UserName=Application[“UserID”].ToString(); Session 1. Session用来保存每一个用户的专有信息 2. Session的生存期是用户持续请求时间加上一段时间(一般是20分钟左右) 3. Session信息是保存在Web服务器内存中的,保存数据量可大可小 4. Session超时或者被关闭将自动释放数据信息 5. 由于用户停止使用应用程序之后它仍在内存中存留一段时间,因此这种方法效率较低 6. 代码:Session[“UserID”]=”test”; String UserName=Session[“UserID”].ToString(); Cookie 1. Cookie用来保存客户浏览器请求服务器页面的请求信息 2. 我们可以存放非敏感的用户信息,保存时间可以根据需要设置 3. 如果没有设置Cookie失效日期,它的生命周期保存到关闭浏览器为止 4. Cookie对象的Expires属性设置为MinValue表示永不过期 5. Cookie存储的数据量受限制,大多数的浏览器为4K因此不要存放大数据 6. 由于并非所有的浏览器都支持Cookie,数据将以明文的形式保存在客户端 7. 代码:Resopnse.Cookies[“UserID”]=”test”; String UserName= Resopnse.Cookies [“UserID”].ToString(); ViewState 1. ViewState用来保存用户的状态信息,有效期等于页面的生命周期 2. 可以保存大量数据但是要慎用,因为会影响程序性能 3. 所有的Web服务器控件都是用ViewState在页面PostBack期间保存状态 4. 不需要则关闭 @page 里面设置EnableViewState=false 5. 代码:ViewState[”ID”]=”cc”; Cache 1. Cache用于在Http请求期间保存页面或者数据 2. Cache的使用可以大大的提高整个应用程序的效率 3. 它允许将频繁访问的服务器资源存储在内存中,当用户发出相同的请求后 4. 可以看出Cache节省的是时间—服务器处理时间 5. Cache实例是每一个应用程序专有的,其生命周期==该应用程序周期 6. 注意:如果要使用缓存的清理、到期管理、依赖项等功能必须使用Insert 或者Add方法方法添加信息 7. 代码:Cache[”ID”]=”cc”;或者Cache.Insert(“ID”,”test”); Hidden 1. Hidden控件属于Html类型的服务器控件,始终处于隐藏状态 2. 每一次提交的时候它会和其他服务器控件一起提交到服务器端 3. 代码如下:Hidden.Value=”cc”; |
请发表评论