网络编程
位置:首页>> 网络编程>> 网页设计>> 简单介绍各种浏览器中的本地存储方法

简单介绍各种浏览器中的本地存储方法

 来源:aliued.com 发布时间:2012-04-26 16:37:34 

标签:本地存储,浏览器

这片文章只对本地存储方法做介绍,若要查看本地存储组件使用方法的介绍请稍等。

本地数据持久化(或者也叫做浏览器本地存储)是一种在浏览器中长久保存数据的方法,在刷新页面,同域名内页面跳转之后仍然可以将数据保留,例如用户的偏好设置、记录已填表单项等,可以减少服务器存储压力,节省网络传输带宽,加快响应速度。目前通用、可靠的跨平台和跨浏览器的数据持久化方案只有cookie,但不幸的是,使用cookie来存储持久化的数据会遇到下列这几个问题:

大小:cookie的大小被限制在大约4K左右,IE6下每个域名下cookie中名值对上限是20个,超出则随机丢弃;其他浏览器一般限制在50个。
占用带宽:cookie信息会被附加在每一个http请求上被来回传送
复杂度:对cookie的操作(解析或增删改)需要成本。
针对这些问题,现代浏览器已经实现了一种不需要依赖cookie的本地数据持久化的方法 ,这些方法相比起cookie都很简单易用,能过存储足够多的数据,并且可以不被附加在http请求上消耗网络带宽。但不幸的是,每一个浏览器的实现方案都不相同并且互不兼容,目前就有下面这四种迥异的本地数据数据持久化方案:

globalstorage:FireFox 2.0+, IE 8 + (https://developer.mozilla.org/en/Storage)
localstoarage: HTML5标准 (http://dev.w3.org/html5/webstorage/)
openDatabase: Safari 3.1+ (http://webkit.org/misc/DatabaseExample.html)
userdata behavior: IE 5.5+ (http://msdn.microsoft.com/en-us/library/ms531424(v=vs.85).aspx)
另外,使用下面这些浏览器插件同样可以实现本地数据持久化:

Adobe Flash
Google Gear
依赖插件实现本地数据持久化会带来一个很明显的问题,就是那些没有安装这些插件的用户将被抛弃,并且你的应用将会被捆绑在一个特定的软件提供商身上(例如Adobe)。Google Gear这个技术在还没有被广泛部署就被Google抛弃了。Flash的装机率虽高,但也有自己的问题,例如:

许多用户阻止了浏览器中的flash或者需要一个单击操作才能够激活flash,这就使得flash很不适合用来作为一个透明的本地数据持久化解决方案
Flash在较新的64位机器上是出了名的不稳定
一些公司处于安全原因阻止了一切flash内容
不管怎么说,如果我们再算上Flash和Gear,这就意味着已经有至少6种互不兼容的方案可以实现本地数据持久化。

不同的存储方法有各自不同的大小限制,你可以不必关心用户使用的是哪种存储方法,但你需要了解一下他们所支持的存储容量的最小值,然后根据你所需要存储的数据大小作出决策。除了cookie,其他几种类型都可以支持我们在本地存储足够多的数据。

Cookie:4k
gears:未知
flash:至少100k,超出一个阈值(?)时需要用户的“允许”。
globalstorage:5M
userdata(IE) :64k
localstorage:理论上为5M(http://dev.w3.org/html5/webstorage/#disk-space)
openDatabase:默认200k[来源请求]
最后需要注意的是,本地数据持久化均有域的限制,也就是不能超出当前的域进行数据的读写操作。

TODO:

本地数据持久化是否可以控制过期时间(expired date)?
持久化到了本地的数据存在了硬盘的什么地方?
参考文献:

persist-js ReadMe (http://pablotron.org/software/persist-js/ )
Last Modified on Wednesday May 25th 2011 04:31:23 PM, Post Revisions:
This post has not been revised since publication.

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com