天天看點

Application, Session, Cookie, Viewstate, Cache對象用法和差別

Application, Session, Cookie, Viewstate, Cache對象用法和差別

================================================================================

        1.Application:用于儲存所有使用者共用的資料資訊。 在Asp.Net中類似的配置資料最好儲存在Web.config檔案中。如果使用Application對象,一個需要考慮的問題是任何寫操作都要在 Application_OnStart事件(global.asax)中完成。盡管使用Application.Lock和 Application.Unlock方法來避免寫操作的同步,但是它串行化了Application對象的請求,當網站通路量大的時候會産生嚴重的性能 瓶頸。是以最好不要用此對象儲存大的資料集。

使用如下:

//存放資訊

Application["UserNameID"]="1000";

//讀取資訊

String NameID=Application["UserNameID"].ToString();

2.Session:用于儲存每個使用者的專用資訊。Session中的資訊儲存在Web伺服器的記憶體中,儲存的資料量可大可小。當Session逾時或被關閉時将自動釋放儲存的資料資訊。對于小量的資料Session對象儲存還是一個不錯的選擇。

使用如下:

//存放資訊

Session["UserNameID"]="1000";

//讀取資訊

String NameID=Session["UserNameID"].ToString();

3.Cookie: 用于儲存客戶浏覽器請求伺服器頁面的請求資訊,其有效期可以人為設定,而且其存儲的資料量很受限制,是以不要儲存資料集及其他大量資料。而且Cookie以明文方式将資料資訊儲存在用戶端的計算機中,是以最好不要儲存敏感的未加密的資料。

使用如下:

//存放資訊

Response.Cookie["UserNameID"].Value="1000";

//讀取資訊

String NameID=Response.Cookie["UserNameID"].Value;

4.ViewState: 常用于儲存單個使用者的狀态資訊,可以儲存大量的資料但是過多使用會影響應用程式的性能。所有Web伺服器控件都使用ViewStat在頁面回發期間儲存自 己的狀态資訊。每個控件都有自己的ViewState,不用時最好關閉以節省資源。通過給@Page指令添加"EnableViewState= false"屬性可以禁止整個頁面的ViewState。

使用如下:

//存取資訊

ViewState["UserNameID"]="1000";

//讀取資訊

string NameID=ViewState["UserNameID"].ToString();

5.Cache:用于在Http請求間儲存頁面和資料。它允許将頻繁通路的大量伺服器資源存儲在記憶體中,當使用者發出相同的請求時伺服器不再次處理而是将Cache中儲存的資訊傳回給使用者,節省了伺服器處理請求時間。

使用如下:

//存放資訊

Cache["UserNameID"]="1000";

//存放資訊

Cache.Insert("UserNameID","1000");

//讀取資訊

String UserNameID=Cache["UserNameID"].ToString();

6.隐藏域:Hidden控件屬于Html類型的伺服器控件,可以實作隐藏域的功能,他和其他的空間沒什麼差別隻是不會在浏覽器上顯示,始終處于隐藏狀态。

使用如下://存放資訊

Hidden.Value="1000";

//讀取資訊

String UserNameID=Hidden.Value;

7.查詢字元串:将傳遞的值連接配接在URL後面,然後通過Response.Redirect方法實作用戶端的重定向。

使用如下:

Response.Redirect("User.aspx?UserNameID=10000&LevelD=100");

執行上面的語句後在IE位址欄顯示的URL的代碼如下:

​​​http://localhost/User.aspx?UserNameID=1000&LevelID=100​​​當跳轉到User.aspx後,可以通過下面代碼獲得傳遞的資訊:

String UserNameID,LevelD;

UserNameID=Request.Params["UserNameID"];

LevelD=Request["LevelD"];

================================================================================

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”;

   String ID =ViewState[“ID”].ToString();

Cache

1.         Cache用于在Http請求期間儲存頁面或者資料

2.         Cache的使用可以大大的提高整個應用程式的效率

3.         它允許将頻繁通路的伺服器資源存儲在記憶體中,當使用者發出相同的請求後

伺服器不是再次處理而是将Cache中儲存的資料直接傳回給使用者

4.         可以看出Cache節省的是時間—伺服器處理時間

5.         Cache執行個體是每一個應用程式專有的,其生命周期==該應用程式周期

應用程式重新開機将重新建立其執行個體

6.         注意:如果要使用緩存的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法添加資訊

7.         代碼:Cache[”ID”]=”cc”;或者Cache.Insert(“ID”,”test”);

   String ID =Cache[“ID”].ToString();

Hidden

繼續閱讀