2008-11-12 110 views
12

據Google的搜索告訴我,cookie的最大允許數量很大程度上取決於瀏覽器,但我無法找到任何最新的數據,以瞭解現代瀏覽器允許多少cookie。允許的最大cookie數

我需要存儲在cookie中有點大量的用戶偏好(對於尚未註冊的用戶),那麼這將是這樣做的最佳方式? (另外,這些Cookie將訪問都通過javascript客戶端和php服務器端)

回答

21

rfc

  • 至少300餅乾

    每如由 字符包含該cookie非末端在語法的大小測量的cookie(
  • 至少4096字節 Set-Cookie頭部的描述)

  • 每個唯一的主機或域名至少有20個餅乾

這些是最低要求。 IE6團隊沒有得到。其他一切都是高度針對瀏覽器的。你最好寫一個測試平臺來測試每個瀏覽器。用小增量步驟測試最大尺寸和數量(並檢查它們是否仍可讀)。

此外,我似乎記得apache有一個問題與數量的餅乾。不記得我見過的地方。

這裏是一個小cookie的測試腳本: http://krijnhoetmer.nl/stuff/javascript/maximum-cookies/

15

最好的辦法是不將它們存儲在cookie中的。

將它們存儲在數據庫中,並將數據庫密鑰存儲在cookie中。如果只是一些偏好,那麼安全性就不是什麼問題。

不要忘記,餅乾將每個請求發送 - 如果你有cookie數據和加載頁面上的10張圖像的2KB,這是數據的一個額外的22KB。

+0

它們也被存儲在數據庫中,但是,我們假設會有足夠多的訪問者,所以我覺得在每個頁面請求中爲20到50個值顛倒數據庫感到有些不安。 。餅乾至少會帶走部分負載。 – pilsetnieks 2008-11-12 12:30:48

+0

你只需要將它們從數據庫中拉出來,然後將它們放入會話中。 – Greg 2008-11-12 12:32:25

2

IIRC,這是20對大多數一般情況下,更多一些,和10一個特定的瀏覽器(IIRC再次,IE5.5?)。最多10個被認爲是一個安全號碼。

你並不真的需要一個以上的反正 - 只需使用一個存儲的ID的客戶端和存儲需要存儲在服務器端對同一ID的一切。除此之外,客戶離開的數據越少,他們移除/腐敗/黑客等的次數就越少。

4

我看着這個在今天,如果你想支持大多數瀏覽器,然後不超過每50塊域餅乾,並且不超過4095個字節每域(即所有cookies的總大小< = 4095字節)

要了解更多信息,here is the test page and results

6

數量的Cookies:

  • 鉻9允許每個域
  • 火狐3.6 180塊餅乾。3允許每個域50周的Cookie
  • 因特網瀏覽器8允許每個域50周的Cookie
  • 歌劇10和9允許每個域30周的Cookie

曲奇大小的限制(4096個字節):

  • 火狐Safari允許cookie最多包含4097個字符,名稱和值爲4096,等號爲1。
  • Opera允許使用最多4096個字符的Cookie,即名稱,值和等號。
  • Internet Explorer允許最多包含4095個字符的Cookie,即名稱,值和等號。

SRC:http://webdesign.about.com/od/cookies/f/cookies-per-domain-limit.htmhttp://www.nczonline.net/blog/2008/05/17/browser-cookie-restrictions/

相關問題