Web Storage(localStorage/sessionStorage)是同步的,会阻塞主线程,只能包含字符串,在浏览器的隐私模式下不可读取,并且无法从web worker或service worker访问Web Storage。
Web Storage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡。
不会由浏览器自动发给服务器,需要手动取出来放到请求里面才会发给服务器,因此可以避免CSRF攻击。
sessionStorage与localStorage的唯一区别就是localStorage属于永久性存储,保存的数据没有过期时间,直到手动去删除;而sessionStorage在当会话结束的时候会被清空。
注:通过点击链接(或者用window.open)打开的新标签页属于同一个session,但复制网址新建选项卡会初始化一个新的session,即使网站是一样的。
一般浏览器支持的是5M大小,不同浏览器大小会有所不同。
不同于cookie在同一浏览器的相同域名可以共享,localStorage要求必须端口号也一样才能共享,sessionStorage甚至要求必须属于同一个会话。
属性 | 描述 |
---|---|
length | 返回存储对象中包含多少条数据。 |
方法 | 描述 |
---|---|
key(n) | 返回存储对象中第 n 个键的名称 |
getItem(keyname) | 返回指定键的值 |
setItem(keyname, value) | 添加键和值,如果对应的值存在,则更新该键对应的值。 |
removeItem(keyname) | 移除键 |
clear() | 清除存储对象中所有的键 |