目前測試的兩種瀏覽器:Chrome 和 IE 。
環境:IIS 7.5
只創建了站點,未做任何配置。
Chrome : v36.0.1985.143 m
單個 Cookie 的長度為 4069 個字符(包括 name,但不包括 = 號 )。
IE : v11
單個 Cookie 的長度為 5091 個字符(包括 name,但不包括 = 號 )。
__________________________________________________ 分隔線 __________________________________________________
至於每個域里面能接收多少個 cookie 。這個在我的測試中發現當 cookie 的值大的時候,雖然寫入成功了,但是在刷新頁面或者發起別的請求的時候會出現如下的錯誤:
但是如果 cookie 的值比較小(即字符長度小)的話,則刷新頁面或發起新的請求就不會有問題。
______________________________________________ 再來一個分隔線 ______________________________________________
回到初衷
——也就是設計 cookie 的目的。因為 HTTP 本身是無狀態的會話,但是很多時需要一個有狀態的會話,為了這個需求設計出來了 HTTP 狀態管理機制(HTTP State Management Mechanism),即 cookie 。而一般的會話又不需要存儲大量信息客戶端(一般都為瀏覽器),所以在設計這個 cookie 的時候並沒有考慮存儲大數據量時的情況,而且實際使用時也很少需要存儲大量數據到客戶端。
假如需要存儲大量數據到客戶端怎么辦呢?這里想到了以下幾點:
- 限制用戶使用最新版 chrome/FireFox/Internet Explorer 瀏覽器,如果對象不是特別大則可以使用 Web Storage。
- 在客戶端用一個 token 標識用戶在服務器端對應的狀態,不過這個想控制好用戶的狀態,需要大量 AJAX 請求去服務器端更改用戶狀態,需要服務器牛X。實際用處也不大。
- 放棄用 Web 開發這個項目,使用 C/S 架構。