在客户端(浏览器端)存储数据有诸多益处,最主要的一点是能快速访问(网页)数据。(以往)在客户端有五种数据存储方法,而目前就只有四种常用方法了(其中一种被废弃了):
- Cookies
- Local Storage
- Session Storage
- IndexedDB
- WebSQL (被废弃)
我在查阅资料的时候还发现其他4种
- userData
- GlobalStorage
- Flash ShareObject
- GoogleGear
下面总结一下这些存储技术的优缺点
1、Cookies
cookie会随着每次HTTP请求头信息一起发送,无形中增加了网络流量,另外,cookie能存储的数据容量有限,根据浏览器类型不同而不同,IE6大约只能存储2K。
优点
- 能用于和服务端通信
- 当 cookie 快要自动过期时,我们可以重新设置而不是删除
缺点
- 增加了文档传输的负载
- 只能存储少量的数据
- 只能存储字符串
- 潜在的 安全问题
- 自从有 Web Storage API (Local and Session Storage),cookies 就不再被推荐用于存储数据了
2、Flash ShareObject
这种方式能能解决上面提到的cookie存储的两个弊端,而且能够跨浏览器,应该说是目前最好的本地存储方案。不过,需要在页面中插入一个Flash,当浏览器没有安装Flash控件时就不能用了。所幸的是,没有安装Flash的用户极少。
缺点 :需要安装Flash插件。
3、Google Gear
Google开发出的一种本地存储技术。
缺点:需要安装Gear组件。
4、userData
IE浏览器可以使用userData来存储数据,容量可达到640K,这种方案是很可靠的,不需要安装额外的插件。
缺点:它仅在IE下有效。
5、localStorage
localStorage是Web Storage互联网存储规范中的一部分,现在在Firefox 3.5、Safari 4和IE8中得到支持。
缺点:低版本浏览器不支持。
6、sessionStorage
使用于Firefox2+的火狐浏览器,用这种方式存储的数据仅窗口级别有效,同一个Tab页面刷新或者跳转,都能获取到本地存储的数据,当新开窗口或者页面时,原来的数据就失效了。
缺点:IE不支持、不能实现数据的持久保存。
7、globalStorage
使用于Firefox2+的火狐浏览器,类似于IE的userData。
缺点:仅在Firefox2+有效。
8、IndexedDB
IndexedDB 是一种更复杂和全面地客户端数据存储方案,它是基于 JavaScript、面向对象的和数据库的,能非常容易地存储数据和检索已经建立关键字索引的数据。
IndexedDB 的优点
- 能够处理更复杂和结构化的数据
- 每个’database’中可以有多个’databases’和’tables’
- 更大的存储空间
- 对其有更多的交互控制
IndexedDB 的缺点
- 比 Web Storage API 更难于应用
总结:Flash shareobject是不错的选择,如果你不想在页面上嵌入Flash,可以结合使用
userData(IE6+)和globalStorage(Firefox2+)和localStorage(chrome3+)实现跨浏览器。