我可以/应该创建多大的Cookie?
当用户登录我们的网站时,我们会从我们的数据库中检索一个包含整个网站使用的各种设置的对象。 为了减少用户每次与我们的网站进行交互时返回数据库的服务器负载,我们正在尝试考虑其他方式。 (我们在需要时序列化和反序列化对象)。 该对象可能<1MB,但可能会有所不同。
允许的最大cookie大小取决于客户端。 例如,2005年的一篇MSDN文章表示,整个cookie可能至少有4096个字节可用(包括过期日期等)。 同一篇文章中提到的RFC包含一些关于限制的更多信息:
6.3实施限制
实际的用户代理实现对它们可以存储的cookie的数量和大小有限制。 一般来说,用户代理的Cookie支持应该没有固定的限制。 他们应该努力尽可能多地存储经常使用的cookie。 此外,通用用户代理应单独提供以下每种最低功能,但不一定要同时提供:
至少300个饼干
每个cookie至少有4096个字节(如在Set-Cookie头文件的语法描述中,由构成cookie非终端的字符的大小来衡量)
每个唯一的主机或域名至少有20个Cookie
如果您的会话数据无价值(如“在重启时不应丢失”),请考虑将其存储在memcached中。 这非常快,并且避免访问数据库来获取会话数据。 您可能实际上想要考虑使用两者的混合:您可以创建一个包含会话ID和登录信息的小型cookie。 然后,服务器端会话的丢失不会导致用户被注销,因此影响会非常低。
Cookie的替代方案是html5本地存储。 旧版浏览器不支持此功能,但如果这对您无关紧要,则可以选择用户偏好设置。 请记住以下几点:
1)默认限制是每个域5MB(我认为)
2)如果您将设置类型的数据存储在本地存储中,您仍然需要与服务器同步,否则更改的浏览器将导致用户设置不在新浏览器中。
cookie数据限制为4kb。
每个cookie 4KB最多300个Cookie总数,最多1.2Mbytes从特定服务器或域接受的20个Cookie
每个Cookie都以名称 - 值对开头。 该对之后是零或多个由分号分隔的属性值对。 对于一个域名,每个cookie限制为4,096字节。 该总数可以作为一个4千字节(KB)的名称/值对存在,也可以存在多达20个名称/值对(共4 KB)。 如果计算机没有足够的空间存储cookie,则会放弃cookie。 它不被截断。 应用程序应尽可能使用尽可能少的Cookie,并尽可能使用小cookie。 另外,应用程序应该能够处理丢失的cookie。
如果Web应用程序使用超过19个自定义Cookie,则ASP会话状态可能会丢失。 Internet Explorer 4.0和更高版本允许每个域共有20个Cookie。 由于ASPSessionID是一个cookie,如果您使用20个或更多自定义cookie,则浏览器将被迫放弃ASPSessionID cookie并丢失会话。
链接地址: http://www.djcxy.com/p/48147.html