据谷歌搜索告诉我,允许的最大 cookie 数量很大程度上取决于浏览器,但是我找不到任何关于现代浏览器允许多少 cookie 的最新数据。
我需要在 cookie 中存储大量用户偏好(对于尚未注册的用户),那么最好的方法是什么?(此外,这些 cookie 将通过 javascript 客户端和 php 服务器端访问)
据谷歌搜索告诉我,允许的最大 cookie 数量很大程度上取决于浏览器,但是我找不到任何关于现代浏览器允许多少 cookie 的最新数据。
我需要在 cookie 中存储大量用户偏好(对于尚未注册的用户),那么最好的方法是什么?(此外,这些 cookie 将通过 javascript 客户端和 php 服务器端访问)
来自rfc:
至少 300 个 cookie
每个 cookie 至少 4096 字节(通过在 Set-Cookie 标头的语法描述中组成 cookie 非终结符的字符的大小来衡量)
每个唯一主机或域名至少 20 个 cookie
这些是最低要求。IE6 团队没有做到这一点。其他一切都是高度特定于浏览器的。您最好编写一个测试平台来测试每个浏览器。用很少的增量步骤测试最大大小和数量(并检查它们是否仍然可读)。
另外,我似乎记得 apache 有大量 cookie 的问题。不记得我在哪里看到的。
这是一个小 cookie 测试脚本: http: //krijnhoetmer.nl/stuff/javascript/maximum-cookies/
最好的方法是根本不将它们存储在 cookie 中。
将它们存储在数据库中,并将 DB 密钥存储在 cookie 中。如果只是一些偏好,那么安全性就不是什么大问题。
不要忘记每个请求都会发送 cookie - 如果您有 2kb 的 cookie 数据并在一个页面上加载 10 个图像,那就是额外的 22kb 数据。
饼干数量:
Cookie 大小限制(4096 字节):
SRC:http ://webdesign.about.com/od/cookies/f/cookies-per-domain-limit.htm和http://www.nczonline.net/blog/2008/05/17/browser-cookie-限制/
我今天研究了一下,如果你想支持大多数浏览器,那么每个域不要超过 50 个 cookie,每个域不要超过 4095 字节(即所有 cookie 的总大小 <= 4095 字节)
要了解更多信息,这里是测试页和结果。
IIRC,对于大多数普通浏览器来说是 20,对于某些浏览器来说更多,对于一个特定的浏览器是 10(同样是 IIRC,IE5.5?)。最多 10 个被认为是一个安全的数字。
无论如何,您实际上并不需要超过一个 - 只需使用一个来存储客户端的 ID,并根据相同的 ID 存储您需要在服务器端存储的所有内容。除此之外,您离开客户端的数据越少,他们删除/损坏/黑客/等的数据就越少。
不知道从他们的角度来看这有多大意义,但我见过一些网站设置了 450 多个 cookie 并向140 多个不同的第三方域报告。