Cookie
由于HTTP協(xié)議是無狀態(tài)的,對于一個瀏覽器發(fā)出的多次請求,WEB服務器無法區(qū)分它們是不是來源于同一個瀏覽器。所以,需要額外的數(shù)據(jù)用于維護會話。 Cookie 正是這樣的一段隨HTTP請求一起被傳遞的額外數(shù)據(jù)。 Cookie 是一小段文本信息,它的工作方式就是伴隨著用戶請求和頁面在 Web 服務器和瀏覽器之間傳遞。Cookie 包含每次用戶訪問站點時 Web 應用程序都可以讀取的信息。
與hidden-input, QueryString相比,Cookie有更多的屬性,許多瀏覽器可以直接查看這些信息:
由于Cookie擁有這些屬性,因此在客戶端狀態(tài)管理中可以實現(xiàn)更多的功能,尤其是在實現(xiàn)客戶端會話方面具有不可替代的作用。
關(guān)于Cookie的更多講解,請參考我的另一篇博客:細說Cookie
優(yōu)點:
1. 可配置到期規(guī)則:Cookie可以在客戶端長期存在,也可以在瀏覽器關(guān)閉時清除。
2. 不需要任何服務器資源:Cookie 存儲在客戶端。
3. 簡單性:Cookie 是一種基于文本的輕量結(jié)構(gòu),包含簡單的鍵值對。
4. 數(shù)據(jù)持久性:與其它的客戶端狀態(tài)數(shù)據(jù)相比,Cookie可以實現(xiàn)長久保存。
5. 良好的擴展性:Cookie的讀寫要經(jīng)過ASP.NET管線,擁有無限的擴展性。
這里我要解釋一下Cookie 【良好的擴展性】是個什么概念,比如:
1. 我可以實現(xiàn)把Cookie保存到數(shù)據(jù)庫中而不需要修改現(xiàn)有的項目代碼。
2. 把SessionId這樣由ASP.NET產(chǎn)生的臨時Cookie讓它變成持久保存。
缺點:
1. 大小受到限制。
2. 增加請求頭長度。
3. 用戶可見,保存敏感數(shù)據(jù)時需要加密。