当用户登录我们的网站时,我们从数据库中检索一个对象,该对象包含整个站点中使用的各种设置。为了减少每次用户与我们网站交互时返回数据库的服务器负载,我们都在考虑其他方法。 (我们在需要时对对象进行序列化和反序列化)。该对象可能<1MB但可能会有所不同。
答案 0 :(得分:4)
允许的最大Cookie大小取决于客户端。例如,2005年的MSDN article表示整个 cookie可能至少有4096个字节可用(包括到期日期等)。同一文章中提到的RFC包含有关限制的更多信息:
6.3实施限制
实际的用户代理实现对数量和数量有限制 他们可以存储的cookie的大小。通常,用户代理的cookie 支持应该没有固定的限制。他们应该努力存储为 许多经常使用的cookie。此外,一般用途 用户代理应提供以下每个最低功能 单独,但不一定同时:
至少300个cookies
每个cookie至少4096个字节(以大小为单位来衡量) 在语法中包含非终端cookie的字符 Set-Cookie标题的描述)
每个唯一的主机或域名至少有20个Cookie
如果您的会话数据没有价值(如“重启时不应丢失”),请考虑将其存储在memcached中。这非常快,并且只是为了获取会话数据而避免访问数据库。您可能实际上想要考虑使用两者的混合:您可以创建一个包含会话ID和登录信息的小cookie。然后,丢失服务器端会话不会导致用户退出,因此影响会非常小。
答案 1 :(得分:3)
cookie的替代方案是html5本地存储。旧版浏览器不支持它,但如果这对您来说无关紧要,那么它是用户首选项的一个很好的选择。请记住以下内容:
1)默认限制为每个域5MB(我认为)
2)如果将设置类型数据存储在本地存储中,则仍需要与服务器同步,否则更改浏览器将导致新浏览器中不存在用户设置。