簡單整理一下重點:
- ViewState
- ●只存在於正在執行那一頁,通常用於postback記值(因為http無狀態)。
- ●原理是HTML上的hidden field,會透過Base-64編碼
- ●webconfig裡可以透過設定來加密:
- ●通常server control會透過viewstate來保存其屬性值,也是傳統ASP.NET web form重整頁面最容易碰到的效率問題。可透過EnableViewState屬性開關。
- ●可存放可序列化的Object (一般程式用到普遍最大的應該也只是hash table吧 )
- Session
- ●可存在於該連線,不同頁面,通常用來跨多頁傳些比較重要、需要安全的值。如果是前後頁面關連性的值,只需要用URL parameter即可。Session的意義比較像是在什麼樣的情況下,開始或變更了某個Session的值。
- ●類似跨網頁的全域變數
- ●佔用Server端記憶體,連線數量一暴增,記憶體很可能被操掛。
- ●預設存在記憶體裡,可以改存在Session State Server或DB。(如果放在Session State Server或者DB,存放的物件也必須是可序列化的)
- ●可設定存活時間,但發生錯誤或特定情況時,會導致Session遺失,請參考:[ASP.NET]Session遺失的幾種可能
- Cookies
- ●單一使用者,存在client端,讀的到就活著。
- ●需注意安全性考量,通常用在個人化portal或profile。
- ●有些single sign on會透過cookie(加密)來存放帳號資訊。
- ●String格式存放。
- Application
- ●在Server上所有User存取同一份。
- ●當Web application重起或關閉時結束。
- ●吃Server記憶體。
- Cache
- ●吃Server記憶體。
- ●可設定時間、hit rate或先進先出來當作條件。
- ●通常應用在靜態網頁快取。