我可以/应该创建多大的cookie?

use*_*084 6 html cookies session

当用户登录我们的站点时,我们从数据库中检索一个对象,该对象包含整个站点中使用的各种设置.为了减少每次用户与我们网站交互时返回数据库的服务器负载,我们都在考虑其他方法.(我们在需要时对对象进行序列化和反序列化).该对象可能<1MB但可能会有所不同.

  1. 在不显着影响性能的情况下,我们可以在会话中拥有多大的对象?
  2. 我们可以在cookie中存储多大的对象?
  3. 还有其他选择(除了从我们的数据库中检索数据)吗?

Thi*_*ter 4

允许的最大 cookie 大小取决于客户端。例如,2005 年的一篇MSDN 文章整个cookie 可能至少有 4096 个字节可用(包括到期日期等)。同一篇文章中提到的 RFC 包含一些有关限制的更多信息

6.3 实施限制

实际的用户代理实现对其可以存储的 cookie 的数量和大小有限制。一般来说,用户代理的 cookie 支持应该没有固定的限制。他们应该努力存储尽可能多的常用 cookie。此外,通用用户代理应单独提供以下每一项最低限度的功能,尽管不一定同时提供:

  • 至少 300 块饼干

  • 每个 cookie 至少 4096 字节(根据 Set-Cookie 标头的语法描述中构成 cookie 非终结符的字符大小来测量)

  • 每个唯一主机或域名至少有 20 个 cookie

如果您的会话数据没有价值(如“在重新启动等情况下不应丢失”),请考虑将其存储在 memcached 中。这非常快,并且避免了仅仅为了获取会话数据而访问数据库。您实际上可能想考虑混合使用两者:您可以创建一个包含会话 ID 和登录信息的小 cookie。那么服务器端会话的丢失不会导致用户注销,因此影响会非常低。