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

  Application、Session、Cookie、ViewState、Cache、Hidden的區別 方法 信息量大小 作用域和保存時間 應用範圍 保存位置 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("List.aspx?nameID=0001&gradeID=002"); 執行上面的語句後在IE地址欄顯示的URL的代碼如下: http://www.QQview.com/List.aspx?nameID=0001&gradeID=002 當跳轉到List.aspx後,可以通過下面代碼獲得傳遞的信息: String NameID,GradeID; NameID=Request.Params["nameID"]; GradeID=Request["gradeID"]; 通過比較總結的每一種對象應用的具體環境: 方法 信息量大小 保存時間 應用範圍 保存位置 Application 任意大小 整個應用程序的生命週期 所有用戶 服務器段 Session 小量,簡單的數據 用戶活動時間+一般延遲時間(一般爲20分鐘) 單個用戶 服務器段 Cookie 小量,簡單的數據 可以根據需要設定 單個用戶 客戶端 Viewstate 小量,簡單的數據 一個Web頁面的生存週期 單個用戶 客戶端 Cache 任意大小 可以根據需要設定 所有用戶 服務器段 隱藏域 小量,簡單的數據 一個Web頁面的生存週期 單個用戶 客戶端 查詢字符串 小量,簡單的數據 直到下次頁面跳轉請求 單個用戶 客戶端 web.config文件 不變或極少改變的小量數據 直到配置文件被更新 所有用戶

發佈了49 篇原創文章 · 獲贊 4 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章