sessionStorage和localStorage都是html5 新增的Web Storage客户端本地保存数据的功能,我们主要从以下几点进行区别:
作用域
- localStorage在相同的协议、相同的主机名、相同的端口下,就能读取/修改到同一份localStorage数据。
- sessionStorage 除了协议、主机名、端口外,还要求在同一窗口(也就是浏览器的标签页)下,如果打开一个同源的页面,会把sessionStorage里面的数据复制过去,但是两个sessionStorage分属不同作用域,即修改读取的不是同一份sessionStorage数据。如果是在当前页面如刷新当前页面,数据还在。
window.open("./index.html", "_blank"); // 复制sessionStorage的数据,但是修改读取的不是同一份sessionStorage数据。
生命周期
- localStorage的储存是永久的,除非手动清除,不然会一直保存着
- sessionStorage属于会话级存储,在同源的浏览器窗口始终存在,只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在,关闭窗口则销毁。
存储大小
- localStorage和sessionStorage的存储数据大小一般都是:5MB(Chrome),不同的浏览器有所差异。
储存类型
- localStorage和sessionStorage都是按照键值对来存储的,但是它的值只能存储字符串类型,我们通常可以采用JSON.stringify()和JSON.parse()来转化。
方法
localStorage的方法与sessionStorage的方法一样
存:
sessionStorage.setItem("key", "value");
取:sessionStorage.getItem("key");
删除:sessionStorage.removeItem("key");
清空:sessionStorage.clear();