HTML5本地存储之web Storage
我们知道,存储信息主要是在服务端或客户端。服务端可通过各种服务器语言,把数据存储在数据库里,这也是网站存储用户信息的主要途径。而在客户端呢?html5之前,web浏览器都是通过cookie来存储的,不过cookie存在以下缺点:
- cookie需要通过javascript 频繁的设置和读取;
- 数量和体积是有限的,数量不超过50个,大小不超过4KB。
- cookie以一个文件的形式存在客户端的机器上,用户可更改,安全性较低。
在html5中新增了web Storage存储功能。
无论用户是离线还是在线状态,用户操作web storage都可以将信息存储在本地,因此web storage又被称作为“本地存储”。
web storage存储的数据只能只能在同一机器,同一浏览器读取。
另外,它存储数据的格式与cookie类似,也是以键值对的格式进行存储。
web storage分类
storage主要分为两类:localStorage(本地存储) 和sessionStorage(会话存储);
localStorage
localStorage对象可以永久存储,当然我们也可以手动的删除数据,存储量有5M的限制。
该对象可以在不同页面间共享数据存储,比如我们在一个选项页打开了一个网页,设置了一些东西,再在另外一个选项页打开此页面时,会看到我们的设置。
sessionStorage
sessionStorage对象则是临时对话存储,也就是说当我们关闭窗口后,数据存储就失效,sessionStorage与localStorage有相同的方法。只不过两者存储数据的时间不同。
web storage数据的操作
设置
设置存储数据主要有三种方式:
localStorage[key] = value; |
读取
读取数据的方式主要是通过它的键值,也有三种方式:
localStorage[key]; |
我们可以看到,web storage对象与普通对象属性和方法的设置、读取是类似的,第三种方法则更偏向于cookie的写法。它们返回的值都是字符串。
若要读取所有的存储数据,我们可以通过遍历:
if (localStorage) { |
删除
删除单条数据,只需要对它进行removeItem函数操作:
localStorage.removeItem("key"); |
而清空所有本地保存的数据。我们可以使用clear():
localStorage.clear(); |
我们可以通过在window上绑定storage事件来监听存储的数据是否发生变化。比如在一个页面设置了一些数据变化,那么我们用这个页面新建选项页或切换到另外的选项页时,也会同步变化。此对象有五个属性:
- key,修改或删除Key值,如果调用clear(),key为null
- newValue,新设置的值或null
- oldValue,原来的值或null
- storageArea, 当前的storage对象
- url,触发函数所在的url
if (window.addEventListener) { |
最后,要注意的是,有些浏览器开启了隐身模式,本地存储和读取可能会失效。