HTML5中增加了两种全新数据存储方式:Web Storage和Web SQL Database. 前者可用于临时或永久保存客户端的少量数据;后者是客户端本地化的一套数据库系统,可将大量数据保存在客户端,无需与服务端交互。极大的减轻了服务端的压力,加快了页面浏览的速度。
HTML5 提供了两种在客户端存储数据(Web Storage)的新方法:
localStorage - 没有时间限制的数据存储,在客户端长期保存数据 sessionStorage - 针对一个 session 的数据存储,保存会话数据
sessionStorage:该数据实质上是被保存在session对象中。保存用户临时会话数据;一旦关闭浏览器,所有数据都会消失。因此sessionStorage不是一种持久化的本地存储,仅仅是会话级别的存储, 不能在不同的浏览器窗口中共享 。
eg:
``` sessionStorage.setItem(key,value); sessionStorage.getItem(key) ```
localStorage:该对象可将数据长期保存在客户端,即使是重新打开浏览器也不会丢失,如果要清除对象保存内容,需调用localStorage.removeItem(key)。另外 localStorage 在所有同源窗口中都是共享的。
``` localStorage.setItem(key,value); localStorage.getItem(key); localStorage.clear()清楚全部的数据 ```
cookies:将数据保存在用户的客户端, 也是在所有同源窗口中都是共享的 。cookie的内容会随着请求一并发送到服务器。
对于cookie,我们可以只在cookie中存放不敏感数据,即使被盗也不会有重大损失。控制cookie的生命期,使之不会永远有效。偷盗者很可能拿到一个过期的cookie。
cookie缺点:
1. Cookie数量和长度的限制。每个domain最多只能有20条cookie,每个cookie长度不能超过4KB,否则会被截掉。
2. 安全性问题。如果cookie被人拦截了,那人就可以取得所有的session信息。即使加密也与事无补,因为拦截者并不需要知道cookie的意义,他只要原样转发cookie就可以达到目的了。
web Storage的优势:
1. 存储空间比cookie大。
2. 存储内容不会发送到服务器。而cookie的内容会随着请求一并发送到服务器,这对于本地存储是一种宽带浪费。
3. 独立的存储空间。不会造成数据混乱。
4. 更多丰富易用的接口,使数据操作更为简单。
其他区别:
- cookie在浏览器和服务器间来回传递;sessionStorage和localStorage不会;
- sessionStorage和localStorage的存储空间更大;
- sessionStorage和localStorage有更多丰富易用的接口;
- sessionStorage和localStorage各自独立的存储空间。