Session:存放於伺服器,生命週期根據不同的設定而定。預設是20分鐘,可以設定成無限期。主要根據用戶端傳遞過來的SessionID來區分不同的對話。至於SessionID如何傳遞。目前絕大部分是只用Cookie,少部分使用url,極少部分使用表單元素。總之從用戶端傳遞到伺服器即可。
application:伺服器應用程式,這個的生命週期是根據應用程式進程來決定的。IIS5以前基本上是當前進程,IIS5之後是根據進程池而定。只要這些停了那麼就消失了,否則就一直存在。
cookie:這個是存放的載體在用戶端的瀏覽器中,生命週期預設是根據伺服器返回的Set-Cookie頭設定的。有2大類。1、httponly:瀏覽器一關就沒了。2、有到期時間:到期時間到了就沒了。當然跟本地瀏覽器的設定也有關係。還有就是每個cookie都會有指定的domain,如果當前網站與指定的domain不同那麼cookie也是取不到的。還有cookie的domain大小寫區分,www.aa.com與www.Aa.com是不同的。另外cookie的傳遞是在Http頭中傳遞的,一旦設定了cookie。每次請求伺服器(不管是網頁還是圖片還是指令碼)都100%會帶上cookie。所以cookie過大的話,會影響網路傳輸效率。還有cookie只支援ASCII編碼所以要UrlEncode
viewstate:這個東西不好說,載體是網路。伺服器將伺服器的 可以序列化的對象 序列化並加密後 轉換成base64格式放到 一個頁面的hidden表單元素中。當帶著這個viewstate的表單提交回伺服器時才能接收到。所以嘛,這個對象的生命週期僅僅是這個頁面。而且頁面必須用表單提交回來,否則資料就丟了。想解密viewstate?首先你要拿到一個重要的解密key。這個就是machineKey。
Querystring:http協議的基礎,理論上沒有生命週期可言。是由用戶端向伺服器發送的URL請求而已。因為也在http頭中所以只支援ASCII編碼
原文地址:http://topic.csdn.net/u/20111020/23/bcc747bf-4bce-4d04-afd0-e26cf4446f2d.html
個人覺得這個答案是比較好的,故摘出來,零金碎玉,積少成多!