HTML 5的本地存储

1. 背景


HTML 4及之前的网页应用,都只能通过cookie来进行网站本地数据存储,但通过cookie进行数据存储有以下几点据点
1) cookies被包括在每个HTTP请求中,这样就使你的web应用速度大打折扣
2) 如果没有SSL传输的情况下,cookie在传输过程是不被加密的,因此有安全风险
3) cookie只有4KB的大小,不能存储多少内容。


所以在HTML 5中就引入了这样一种有大量存储空间,存储于客户端,不随页面刷新而消失的,不回传至服务器的本地存储服务。


在HTML 5之前,有一些技术也曾经被提出来解决用户本地存储的问题:
1. 微软在DHTML的行为中定义过userData,允许页面保存64KB数据。被信任的域名允许使用640KB数据
2. 2002年,Adobe在Flash中引入了Local Shared Objects(LSO),使Flash可以在用户本地存储100KB数据。
3. 2005年,Brad Neuberg完成了一个AJAX Massive Storage System (AMASS),并在之后重写AMASS,结果集成在Dojo工具集中(dojox.storage)可以使用100KB本地数据,并在需要更多数据的时候提示用户以取得1MB, 10MB数据,2009年,dojox.storage可以自动检测Flash,Gears, Adobe AIR以及HTML 5在firefox中实现的一个较早原型的存储。
4. 2007年,Google发布了gears,提供了对SQLite的支持,数据可以存储在本地SQLite数据库中。


2. HTML 5中的本地存储
在HTML 5中使用本地存储,需要先检测浏览器是否支持HTML 5中的本地存储功能(在前文中有过说明和示例)。
基本的数据操作有:
localStorage.setItem
localStorage.getItem
localStorage.removeItem



还有localStorage本身的属性,比如存储内容的个数:
localStorage.length
和通过id进行数据遍历的key方法:
localStorage.key


当localStorage内的数据发生变化的时候,storage事件将被触发。通过监听storage事件可以在数据变化时触发相应的动作:
if (window.addEventListener) {
window.addEventListener("storage", handle_storage, false);
} else {
window.attachEvent("onstorage", handle_storage);
};



3. 当前localStorage的约束
1)默认情况下每个网站来源可以取得5MB的存储空间
2)HTML 5以字符串的形式存储数据,所以如果存储浮点数,精度可能会受到影响。提取数据可以过parseInt和parseFloat方法来完成
3) 当存储量超过限制大小时,QUOTA_EXCEEDED_ERR异常被触发,当前还没有浏览器可以向用户发出申请请求更多空间。


4. 其他选择
与localStorage功能相近的有WebDB,它是一个基于SQLite的数据库,用户可以通过数据库SQL语句向数据库写入和读取数据。提供了同样便利的数据存储方式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值