php cookie 最大长度,COOKIE长度限制总结

没时间可只读下面一句话,深入理解请阅读全文。

总之,在进行页面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的设置/修改/获取/删除 里面定义的。

for (let i = 1; i <= 300; i++) {

setCookie('cookie' + i, "value" + i, 5);

}

结果如下:

cookie.jpg

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)就可以满足所有浏览器了

你可能感兴趣的:(cookie限制,域cookie,浏览器兼容性,HTTP请求头,存储容量优化)