Asp.net中Application Session Cookie ViewState Cache Hidden 區別

來源:互聯網
上載者:User
 

在ASP.NET中,有很多種儲存資訊的對象。例如:Application,Session,Cookie,ViewState和Cache等,那麼它們有什麼區別呢?每一種對象應用的環境是什嗎?

為了更清楚的瞭解,我們總結出每一種對象應用的具體環境,如下表所示:

方法 資訊量大小 儲存時間 應用範圍 儲存位置
Application 任意大小 整個應用程式的生命期 所有使用者 伺服器端
Session 小量、簡單的資料 使用者啟用時間+一段延遲時間(一般為20分鐘) 單個使用者 伺服器端
Cookie 小量、簡單的資料 可以根據需要設定 單個使用者 用戶端
Viewstate 小量、簡單的資料 一個Web頁面的生命期 單個使用者 用戶端
Cache 任意大小 可以根據需要設定 所有使用者 伺服器端
隱藏欄位 小量、簡單的資料 一個Web頁面的生命期 單個使用者 用戶端
查詢字串 小量、簡單的資料 直到下次頁面跳轉請求 單個使用者 用戶端
Web.Config檔案 不變或極少改變的小量資料 直到設定檔被更新 單個使用者 伺服器端

Application

1、Application用來儲存所有使用者共用的資訊;

2、在Asp時代,如果要儲存的資料在應用程式生存期內不會或者很少發生改變,那麼使用Application是理想的選擇。但是在Asp.net開發環境中我們把類似的配置資料放在Web.config中;

3、如果要使用Application要注意的是所有的寫操作都要在Application_OnStart事件中完成 (global.Asax),儘管可以使用Application.Lock()避免了衝突,但是它序列化了對Application的請求,會產生嚴重 的效能瓶頸;

4、不要使用Application儲存大資料量資訊;

5、代碼:

  1. Application["UserID"] = "test";//寫 
  2. string UserName = Application["UserID"].ToString();//讀 

Session
1、Session用來儲存每一個使用者的專有資訊;
2、Session的生存期是使用者持續請求時間加上一段時間(一般是20分鐘左右);
3、Session資訊是儲存在Web伺服器記憶體中的,儲存資料量可大可小;
4、Session逾時或者被關閉將自動釋放資料資訊;
5、由於使用者停止使用應用程式之後它仍在記憶體中存留一段時間,因此這種方法效率較低;
6、代碼:

  1. Session["UserID"] = "test";//寫 
  2. string UserName = Session["UserID"].ToString();//讀 

Cookie
1、Cookie用來儲存客戶瀏覽器請求伺服器頁面的請求資訊;
2、我們可以存放非敏感的使用者資訊,儲存時間可以根據需要設定;
3、如果沒有設定Cookie失效日期,它的生命週期儲存到關閉瀏覽器為止;
4、Cookie對象的Expires屬性設定為MinValue表示永不到期;
5、Cookie儲存的資料量受限制,大多數的瀏覽器為4K因此不要存放大資料;
6、由於並非所有的瀏覽器都支援Cookie,資料將以明文的形式儲存在用戶端;
7、代碼:

  1. Resopnse.Cookies["UserID"] = "test";//寫 
  2. string UserName = Resopnse.Cookies["UserID"].ToString();//讀 

ViewState
1、ViewState用來儲存使用者的狀態資訊,有效期間等於頁面的生命週期;
2、可以儲存大量資料但是要慎用,因為會影響程式效能;
3、所有的Web伺服器控制項都是用ViewState在頁面PostBack期間儲存狀態;
4、不需要則關閉 @page 裡面設定EnableViewState=false;
5、代碼:

  1. ViewState["ID"] = "test";//寫 
  2. string ID = ViewState["ID"].ToString();//讀 

Cache
1、Cache用於在Http請求期間儲存頁面或者資料;
2、Cache的使用可以大大的提高整個應用程式的效率;
3、它允許將頻繁訪問的伺服器資源儲存在記憶體中,當使用者發出相同的請求後,伺服器不是再次處理而是將Cache中儲存的資料直接返回給使用者;
4、可以看出Cache節省的是時間(伺服器處理時間);
5、Cache執行個體是每一個應用程式專有的,其生命週期==該應用程式周期,應用程式重啟將重新建立其執行個體;
6、注意:如果要使用緩衝的清理、到期管理、依賴項等功能必須使用Insert 或者Add方法方法添加資訊;
7、代碼:

  1. Cache["ID"] = "test"; 或者 Cache.Insert("ID","test");//寫 
  2. string ID = Cache["ID"].ToString();//讀 

Hidden
1、Hidden控制項屬於html類型的伺服器控制項,始終處於隱藏狀態;
2、每一次提交的時候它會和其他伺服器控制項一起提交到伺服器端;
3、代碼:

  1. Hidden.Value = "king";//寫 
  2. string id = Hidden.Value; 要使用Runat=server//讀 

查詢字串
1、查詢字串的方式是將要傳遞的值串連在URL後面;
2、一般用於頁面之間傳遞資訊;
3、由於URL的長度有一定的限制,因此不能傳遞太大的資訊;
4、安全性不是很好。
5、代碼:

  1. Response.Redirect("List.aspx?id=123&name=abc");//傳值頁面 
  2. string name = Request.QueryString["name"]; string id = Request.QueryString["id"];//取值頁面 

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”]=”yiner”;
   String ID =ViewState[“ID”].ToString();

Cache

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

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

3.         它允許將頻繁訪問的伺服器資源儲存在記憶體中,當使用者發出相同的請求後
伺服器不是再次處理而是將Cache中儲存的資料直接返回給使用者

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

5.         Cache執行個體是每一個應用程式專有的,其生命週期==該應用程式周期
應用程式重啟將重新建立其執行個體

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

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

Hidden

1.         Hidden控制項屬於Html類型的伺服器控制項,始終處於隱藏狀態

2.         每一次提交的時候它會和其他伺服器控制項一起提交到伺服器端

3.         代碼如下:Hidden.Value=”king”;
string id=Hidden.Value; 要使用Runat=server

 

附一:

Application_start: 第一個訪問網站的使用者會觸發該方法. 通常會在該方法裡定義一些系統變數,如聊天室的線上總人數統計,曆史訪問人數統計的初始化等等均可在這裡定義.

Application_end:網站關閉,或重啟時,會觸發該方法. 沒有進行過多實驗.

Session_start : 每個使用者訪問網站的第一個頁面時觸發;

Session_end:使用了session.abandon(),或session逾時使用者退出後均可觸發. 注意Session_end中不 能使用session對象,伺服器對象, server.mappath().  所以只能用session.contents("username") 取代session("username"). 或者用Application對象或方法;

例如想在session_end中使用Server.MapPath("users.xml"), 則應在Application_start 中定義Application("xmlPath") = Server.MapPath("users.xml"),然後在session_end中調用Application("XmlPath"),而不能直 接在session_end中使用諸如:Server.MapPath("users.xml"),

他們的執行順序是:1:Application_start  2: session_start ; 3:session_end: 4 Application_end

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.