浏览器cookie数量与大小限制

  cookie对一个大网站来说是很重要的,网站用来存用户登录信息,电商用来存订单信息,等等。分析也会用到cookie信息,就连联盟也是靠cookie的,但浏览器对cookie数量和大小有限制的!如果超过了这个限制,你的信息将丢失,你知道吗?

下面看看这些限制:

一、一个域名下可以有多少个cookie

firefox 3.6可以存150个cookie

ie6最多有50个cookie

二、当超过cookie最大个数时,浏览器如何响应

firefox 3.6 剔除最老的设置新的

ie6 剔除最老的设置新的

三、一个cookie最大字符数

firefox 3.6 4097字节,包括name、等于号、value

ie6 4096字节,包括name、等于号、value

注意:以前一直理解为value有大小限制

四、一个cookie的value超过字符限制,浏览器如何处理

firefox 3.6 超过字符限制就不设置

ie6 超过字符限制也会设置,但取不到值

简单测试下,纠正了我对cookie的两个错误:

1. 网上流传一个域名最多可以有20个cookie

2. cookie内容最多为4096个字节

cookie使用总结:

1. 尽量让cookie的权限范围小,能子域可见domain绝不设为主域

2. 所有页面有效的cookie,失效时间够用就好,别设太长,免得每个请求都带一些无用的cookie下就是关于各浏览器之间对cookie的不同限制:

浏览器cookie数量与大小限制_第1张图片
图片发自App

    超出个数限制后的处理操作:

        1、IE与Opera的处理是一样的。他们都利用“最近最少使用算法”,当cookie已经达到限额时就将自动剔除最老的cookie,以给最新的cookie的留下可用的空间。

        2、FF很特殊,虽然最后设置的cookie会被保留下来,但它好像没有什么章法随机进行删除已存在的cookie。

    备注:

        在我们进行页面cookie操作的时候,应该尽量保证cookie的数量以及相应的大小。cookie个数最好 < 20~30个;cookie大小最好 < 4K 


  上听同事说周nginx的HTTP400错误,而且这个HTTP400错误并不是每次都会出现的,查了一下发现nginx 400错误是由于request header过大,通常是由于cookie中写入了较长的字符串所引起的。

解决方法是不要在cookie里记录过多数据,如果实在需要的话可以考虑调整在nginx.conf中的client_header_buffer_size (默认1k)

  若cookie太大,可能还需要调整large_client_header_buffers (默认4k),该参数说明如下:

请求行如果超过buffer,就会报HTTP 414错误(URI Too Long)

nginx接受最长的HTTP头部大小必须比其中一个buffer大,否则就会报400的HTTP错误(Bad Request)。

你可能感兴趣的:(浏览器cookie数量与大小限制)