没时间可只读下面一句话,深入理解请阅读全文。
总之,在进行页面cookie操作的时候,应该尽量保证每个域cookie个数小于50个,单条cookie总长度4KB(包阔键和值以及等号)
Cookie的长度限制分这么几个方面来总结。
(1) 浏览器所允许的每个域下的最大cookie数目,没有去自己测试,从网上找到的资料大概是这么个情况
浏览器 | 允许cookie条数 |
---|---|
IE | 原先为20个,后来升级为50个 |
Firefox | 50个 |
Opera | 30个 |
Chrome | 150个 |
Safari | 无限制 |
chrome的150是亲自测试成功的,刚好150条。
当Cookie数超过限制数时浏览器的行为:IE和Opera会采用LRU算法将老的不常使用的Cookie清除掉,Firefox的行为是随机踢出某些Cookie的值。当然无论怎样的策略,还是尽量不要让Cookie数目超过浏览器所允许的范围。
浏览器所允许的每个Cookie的最大长度
Firefox和Safari:4079字节
Opera:4096字节
IE:4095字节
(3) 服务器中Http请求头长度的限制。Cookie会被附在每次http请求头中传递给服务器,因此还会受到服务器请求头长度的影响。
测试一下chrome中允许cookie的最大数量:
本文的setCookie函数是这篇文章:cookie是什么?cookie的设置/修改/获取/删除 里面定义的。
此外这篇文章完整总结了cookie在各浏览器的条数限制:HTTP协议对URI长度,POST数据长度及COOKIE长度限制说明
for (let i = 1; i <= 300; i++) {
setCookie('cookie' + i, "value" + i, 5);
}
结果如下:
let str = '';
for(let i=1;i<=5000;i++) {
str += "1";
setCookie("a",str,5);
setCookie("b",str,5);
setCookie("c",str,5);
setCookie("d",str,5);
setCookie("e",str,5);
}
console.log(document.cookie.length);
上例测试给a,b,c,d,e五个字段设置cookie,每个字段的最终长度都会受到浏览器限制,达不到5000,只能到4059字节。也就是说cookie的总长度=cookie(150)条数 * 每条cookie长度(4059)
约为0.58M但是每个浏览器的cookie条数不一样,所以每个浏览器都有自己存储的cookie总长度值。平时只要满足浏览器值的浏览器(IE)就可以满足所有浏览器了