注:本文为原创文章,转载时请注明转载地址。

    
cookie经常用来存储客户端小数据量的状态数据,在实际的web开发中经常使用,但是很多人在实际的使用中都会忽略一个cookie重大的缺陷以至该缺陷在程序中引发的bug很难被发现。

     使用cookie的缺陷就是:cookie在每台计算机上总的数量不能超过300个,对于每个服务器(并不是只单独的一个domain)来说最多不能超过20个,每个cookie的大小不能超过4000字节,当然以上的数据只是一个最大值,不同的浏览器可能会更小。

     Cookie的这个缺陷在程序中会引发以下问题:
     Cookie的使用很简单,只要name=value即可,同时每个这种值对就代表一个cookie文件,对于每个服务器来说,如果用来存储cookie的文件超过20个,那么将会导致后面的cookie文件覆盖早期的cookie文件,这除了会导致程序中自定义的状态数据丢失外还会导致session丢失的问题。大家都知道,在大部分的session跟踪中都是通过cookie来实现的,如jsessionid=000000之类的样式,如果滥用cookie使其数目过大将会覆盖掉该session跟踪的信息,那么就会引发session丢失的问题,并且引发的这种问题具有很大的隐蔽性以及不确定性。
     同样如果每个cookie文件的数据过大以至超过4K(可能还会更小)将会自动溢出,同样会导致数据丢失的问题。

     因此在实际开发中尽量将数据压缩,将cookie文件的数量压缩,不要将每个状态数据单独存放在独立的cookie文件中,最好将不同的状态数据通过压缩存放在同一个cookie文件中,举个例子:
     如果在客户端保存用户登录的用户名和密码或者其他信息时,不要用以下方式: id=XXXX,pwd=XXX,最好是存在一个文件中如:user=id-XXX,pwd-XXX

 

评论
qq493197363 2008-05-11   回复
qq493197363 2008-05-11   回复
写的很好啊
发表评论

您还没有登录,请登录后发表评论

walsece
搜索本博客
我的相册
2345bc49-8e77-37d4-b575-99681deb7f50-thumb
llk.PNG
共 4 张
最近加入圈子
存档
最新评论