作者:fspygh | 来源:互联网 | 2023-08-01 12:13
最近面试的过程中,碰到了一些关于本地存储的问题,主题也不知道写什么好,就随便写个本地存储。我问了许多的前端,使用Cookie会有什么弊端,很多都是回答说不安全之类的,不安全那是肯定的,不过只要服务端在
最近面试的过程中,碰到了一些关于本地存储的问题,主题也不知道写什么好,就随便写个本地存储。
我问了许多的前端,使用COOKIE会有什么弊端,很多都是回答说不安全之类的,不安全那是肯定的,不过只要服务端在使用COOKIE的时候适当的加个密就可以防止很多安全的问题了,这不是我们前端主要关心的问题。在日常的开发过程中,本人碰到了以下问题:
1. 存储大小问题
2. 在请求过程中会带过去服务端,这样如果COOKIE过大会影响发包。
首先我们看看第一点,一些权威机构对COOKIE存放大小是怎么说的
一个域名的每个 COOKIE 被限制为 4,096 字节。这个总数可以 4 千字节 (KB) 的一个名称-值对的形式存在,或作为多达 20 名称-值对的总的 4 KB。如果计算机没有足够的空间存储该 COOKIE,该 COOKIE 将被丢弃。
就是说单个值不得超过4K, 可以多达20个。这样的存储量基本是够用了,不过对于服务器端如果也使用的话就很难说了,因为这里就不单单是前端要用了,还多了一方,这样的数据是不可靠的,你永远无法知道是不是你自己把他给堵满了,或者把你的改了。对于团队开发,使用时有这个必要看看COOKIE使用的情况。
另外还有一点就是,如果你用一些如Firebug的调试软件抓一下头部你会发现,在网站发送请求(Post)的时候会把COOKIE也带了过去。这样一看,如果你单COOKIE有1KB 共有 5 个就 5 KB, 按1M的小水管来算,上传最大就只有50K/S, 就上传就花了 0.1 秒,等服务端返回加处理这样一个过程花的时间就长了许多。对于大访问量的站就更不用说了,一个用户单一个请求上传就花了5KB, 1024个用户就 5M,1024W就是5M*10000,这是多么大的上传宽带开销。
针对以上这两个问题本人觉得可以用以下的解决方案.
支持 localstorage 的浏览器使用 localstorage , 这个本地存储的对象ie8以上的都支持了,Firefox 、Chrome就更不用说了。
对于一些低级一点的浏览器如IE6 IE7 可以用Flash的SharedObject模拟一个本地存储的对象。
这提到的这两个东西都是服务器端不会用到的,所以也不用担心数据被服务端的人给改了。
可以对localstorage 和 Flash的存储进行一个封装,让它使用方便点就可以了。具体怎么样去实现这里就不多说了,提供一些参考资料吧。
http://blog.csdn.net/ld_flex/article/details/6002774
http://www.cnblogs.com/xiaowei0705/archive/2011/04/19/2021372.html