webStorage 的两个主要目标是:
1提供一种在cookie之外存储会话数据的途径
2提供一种存储大量可以跨会话存在的数据的机制
方法:clear getItem key removeItem setItem
sessionStorage对象存储特定于某个会话的数据,也就是该数据只保持到浏览器关闭.。
globalStorage
localStorage 不能给localStorage指定任何访问规则,要访问同一个localStorage对象,页面必须来自同一个域名(子域名无效),使用同一种协议,在同一个端口上。这相当于globalStorage[location.host].
数据的有效期保存到通过js删除或者是用户清除浏览器缓存
用于跨会话持久化数据并遵循跨域安全策略。
storage事件
对storage对象进行任何修改,都会在文档上触发storage事件,当通过属性或setItem()方法保存数据,使用delete操作符或removeItem()删除数据,或者调用clear()方法时,都会发生该事件。该事件的event对象有以下属性
domain:发生变化的存储空间的域名
key:设置或者删除的键名
newValue:如果是设置值,则是新值;如果是删除值,则是null
oldValue:键被更改之前的值
大小也有限制,对存储空间大小的限制都是以每个来源(协议、域和端口)为单位,大约是5MB
cookie与localStorage和sessionStorage的区别
特性 Cookie localStorage sessionStorage
数据的生命期 一般由服务器生成,可设置失效时间。如果在浏览器端生成Cookie,默认是关闭浏览器后失效除非被清除,否则永久保存 仅在当前会话下有效,关闭页面或浏览器后被清除
存放数据大小 4K左右 一般为5MB
与服务器端通信 每次都会携带在HTTP头中,如果使用cookie保存过多数据会带来性能问题仅在客户端(即浏览器)中保存,不参与和服务器的通信
易用性 需要程序员自己封装,源生的Cookie接口不友好源生接口可以接受,亦可再次封装来对Object和Array有更好的支持