Asp.net 中ViewState,cookie,session,application,cache的比較

Asp.net 中的狀態管理維護包含ViewState,cookie,session,application,cache五種方式,如下是它們的一些比較:數據庫

1.存在於客戶端仍是服務端瀏覽器

  • 客戶端:

viewstate、cookie服務器

  • 服務端:

session、application、cachecookie

*session:在服務端的存儲方式包括4中,內存(最經常使用),ASP.NET State Service(Windows服務)、數據庫、自定義狀態提供程序session

2.有效時間app

  • viewstate:

只要頁面關閉,其狀態就失效網站

  • cookie:

      包括臨時cookie和永久cookie,臨時cookie存在於瀏覽器內存中,只要瀏覽器關閉則臨時cookie失效,永久cookie是在cookie對象上設置了失效時間,其保存在磁盤上,等過了失效時間即失效。cookie受客戶端瀏覽器控制,且瀏覽器可以存儲的cookie容量是有限的,所以當瀏覽器不支持cookie、人爲在瀏覽器刪除cookie或者瀏覽器cookie容量超出限制都會使cookie失效。.net

  • session:

session的狀態有一個超時時間,當超過該時間後,session自動無效orm

  • application:

這個狀態在服務器從新啓動以前都是有效的。對象

  • cache:

設置cache無效主要有兩種方式:一是設置失效時間,二是經過設置依賴項,當依賴項發生變化時,cache失效

3.可保存的數據格式

  • viewstate:字符串
  • cookie:字符串
  • session:可保存對象
  • application:可保存對象
  • cache:可保存對象

4.客戶端與服務端交互時的關係

  • viewstate:

      客戶端與服務端的交互只能發送或操做當前頁面的視圖狀態

  • cookie:

       通常狀況下,每次用戶向服務端發送請求時會把當前站點的全部cookie發向服務端,但cookie容許設置路徑(HttpCookie類包含Domain和Path屬性),若是設置了具體的路徑,則只有訪問該路徑時,纔會把cookie發往服務端

  • session:

       客戶端訪問同一個站點下的不一樣資源,使用的是同一個session,服務端和客戶端一般經過cookie來進行關聯,即在客戶端保存sessionID,每次向服務端發起請求時都會同時把sessionID(在cookie中的主鍵名爲「ASP.NET_SessionId」)也一塊兒帶上,這樣服務端拿到sessionID後就能找到客戶端對應的session,因此session只跟站點和客戶端相關。

  • application:

     全部客戶端共享同一個application,它是全局的

  • cache:

      全部客戶端共享同一個cache,它是全局的,但它有更多的控制權,如設置什麼時候失效

 5.應用場景

viewstate:只存在ASP.NET WebForm中,如每一個服務器端控件都包含一個視圖狀態

cookie:一般用於存儲一些服務端相關信息的標識符,從而在cookie發往服務端後能夠找到其所對應的信息,也會用來保存帳戶密碼等相關信息

session:用於與指定的客戶端共同維護一個狀態,保存具體的狀態信息

application:保存全局的狀態信息,如該網站的訪問次數

cache:保存全局的狀態信息,且這些信息的失效時間能夠獲得更好的控制

相關文章
相關標籤/搜索