webstorage并不是要替代cookie,而是为了弥补随着web的发展,cookie在存储限制(存储容量最多为4k),安全性(在http协议中明文传输)存在的缺点而提出的
两者的API是相同的
function introsetItem(key, value) 以键值对的形式保存一条数据
getItem(key) 根据键来获得值
removeItem(key) 根据键来删除一条数据
key(index) 根据索引获得键的名称
clear() 删除全部数据
两者都有length属性
sessionStorage.setItem("name", "Jack"); sessionStorage.setItem("phone", "18856894523"); console.log(sessionStorage.getItem('name')); // Jack console.log(sessionStorage.key(0)); // name console.log(sessionStorage.length); // 2 sessionStorage.removeItem('phone'); console.log(sessionStorage.length); // 1 sessionStorage.clear(); console.log(sessionStorage.length); // 0
两者的比较
localStorage和sessionStorage都是用来存储客户端临时信息的对象。均只能存储字符串类型的对象,虽然规范中可以存储其他原生类型的对象,但是目前为止没有浏览器对其进行实现。
localStorage生命周期是永久,除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在。
sessionStorage生命周期为当前窗口或标签页,一旦窗口或标签页被永久关闭了,sessionStorage存储的数据就被清空了。
不同浏览器无法共享localStorage或sessionStorage中的信息。
相同浏览器的不同页面(页面属于相同域名和端口)间可以共享相同的localStorage
不同页面或标签页间无法共享sessionStorage的信息。注意,页面及标签页仅指顶级窗口,如果一个标签页包含多个iframe标签且属于同源页面,那么他们之间是可以共享sessionStorage的。
使用window.open打开页面和改变localtion.href方式都可以获取到sessionStorage内部的数据
cookie 与 webstorage的区别
存储限制
每个domain中只能存储最多20条cookie,cookie数据不能超过4K
webStorage也有存储大小的限制,但是比cookie大得多,可以达到5M或更大
数据的有效期
sessionStorage:仅在当前的浏览器窗口关闭有效;
localStorage:始终有效,除非用户手动删除
cookie:cookie过期时间之前一直有效,即使窗口和浏览器关闭
作用域
sessionStorage:不在不同的浏览器窗口中共享,即使是同一个页面;
localStorage:同源窗口共享
cookie:同源窗口共享