Application、Session、Cookie、ViewState、Cache、Hidden的區別

作者: cjg123456we  來源: 博客園  發布時間: 2010-05-31 09:37  閱讀: 2279 次  推薦: 0   原文鏈接   [收藏]  
方法
信息量大小
作用域和保存時間
應用范圍
保存位置
Application
任意大小
整個應用程序的生命期
整個應用程序/所有用戶
服務器端
Cache
任意大小
可以根據需要設定
整個應用程序/所有用戶
服務器端
Session
小量,簡單的數據
用戶活動時間+一段延遲時間(一般為20分鐘)
單個用戶
服務器端
Cookie
小量,簡單的數據
可以根據需要設定
單個用戶
客戶端
Viewstate
小量,簡單的數據
一個Web頁面的生命期
單個用戶
客戶端
隱藏域
小量,簡單的數據
一個Web頁面的生命期
單個用戶
客戶端
查詢字符串
小量,簡單的數據
直到下次頁面跳轉請求
單個用戶
客戶端

1. Application:用于保存所有用戶共用的數據信息。在Asp.Net中類似的配置數據最好保存在Web.config文件中。如果使用Application對象,一個需要考慮的問題是任何寫操作都要在 Application_OnStart事件(global.asax)中完成。盡管使用Application.Lock和 Application.Unlock方法來避免寫操作的同步,但是它串行化了Application對象的請求,當網站訪問量大的時候會產生嚴重的性能瓶頸。因此最好不要用此對象保存大的數據集。
使用如下:
//存放信息
Application["nameID"]="0001";
//讀取信息
String NameID=Application["nameID"].ToString();

2. Session:用于保存每個用戶的專用信息。Session中的信息保存在Web服務器的內存中,保存的數據量可大可小。當Session超時或被關閉時將自動釋放保存的數據信息。對于小量的數據Session對象保存還是一個不錯的選擇。
使用如下:
//存放信息
Session["nameID"]="0001";
//讀取信息
String NameID=Session["nameID"].ToString();

3. Cookie: 用于保存客戶瀏覽器請求服務器頁面的請求信息,其有效期可以人為設置,而且其存儲的數據量很受限制,因此不要保存數據集及其他大量數據。而且Cookie以明文方式將數據信息保存在客戶端的計算機中,因此最好不要保存敏感的未加密的數據。
使用如下:
//存放信息
Response.Cookie["nameID"].Value="0001";
//讀取信息
String NameID=Response.Cookie["nameID"].Value;
 
4. ViewState:常用于保存單個用戶的狀態信息,可以保存大量的數據但是過多使用會影響應用程序的性能。所有Web服務器控件都使用ViewStat在頁面回發期間保存自己的狀態信息。每個控件都有自己的ViewState,不用時最好關閉以節省資源。通過給@Page指令添加"EnableViewState= false"屬性可以禁止整個頁面的ViewState。
使用如下:
//存取信息
ViewState["nameID"]="0001";
//讀取信息
string NameID=ViewState["nameID"].ToString();

5. Cache:用于在Http請求間保存頁面和數據。它允許將頻繁訪問的大量服務器資源存儲在內存中,當用戶發出相同的請求時服務器不再次處理而是將Cache中保存的信息返回給用戶,節省了服務器處理請求時間。
使用如下:
//存放信息
Cache["nameID"]="0001";
//存放信息
Cache.Insert("nameID","0001");
//讀取信息
String NameID=Cache["nameID"].ToString();
注意: 如果利用緩存提供的清理、到期時間和依賴項等功能,必須使用Cache.Insert方法或Cache.Add方法添加信息。

6. 隱藏域:Hidden控件屬于Html類型的服務器控件,可以實現隱藏域的功能,他和其他的空間沒什么區別只是不會在瀏覽器上顯示,始終處于隱藏狀態。
使用如下:
//存放信息
Hidden.Value="0001";
//讀取信息
String NameID=Hidden.Value;

7. 查詢字符串:將傳遞的值連接在URL后面,然后通過Response.Redirect方法實現客戶端的重定向。
傳遞方法如下:
Response.Redirect("/");
執行上面的語句后在IE地址欄顯示的URL的代碼如下:
http://www.126fm.net/
當跳轉到List.aspx后,可以通過下面代碼獲得傳遞的信息:
String NameID,GradeID;
NameID=Request.Params["nameID"];
GradeID=Request["gradeID"];
通過比較總結的每一種對象應用的具體環境:
方法 信息量大小 保存時間 應用范圍 保存位置
Application 任意大小 整個應用程序的生命周期 所有用戶 服務器段
Session 小量,簡單的數據 用戶活動時間+一般延遲時間(一般為20分鐘) 單個用戶 服務器段
Cookie 小量,簡單的數據 可以根據需要設定 單個用戶 客戶端
Viewstate 小量,簡單的數據 一個Web頁面的生存周期 單個用戶 客戶端
Cache 任意大小 可以根據需要設定 所有用戶 服務器段
隱藏域 小量,簡單的數據 一個Web頁面的生存周期 單個用戶 客戶端
查詢字符串 小量,簡單的數據 直到下次頁面跳轉請求 單個用戶 客戶端
web.config文件 不變或極少改變的小量數據 直到配置文件被更新 所有用戶
0
0
 
 
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()


    留言列表 留言列表

    發表留言