localStorage、sessionStorage、IndexedDB 在容量、同步阻塞和事务语义上的差异
进阶版来源:jd中级工程师浏览器存储机制IndexedDBWeb Storage API
草稿
答案解析
这三个都是浏览器端存储方案,但定位不太一样。
localStorage 和 sessionStorage 都属于 Web Storage,API 比较简单,都是 key value 形式,而且值只能存字符串。
容量上,一般 localStorage 和 sessionStorage 都在 5MB 左右 ,不同浏览器会有差异。localStorage 是持久化存储,除非主动删除或者用户清理浏览器数据,否则一直存在;sessionStorage 只在当前标签页会话内有效,标签页关闭后就没了,而且不同标签页之间不共享。
同步阻塞方面,localStorage 和 sessionStorage 的 API 都是 同步的 ,比如 getItem、setItem 会阻塞主线程。如果数据量比较大,或者频繁读写,就可能影响页面性能,所以它们更适合存少量配置类数据,比如 token、主题配置、简单状态等。
事务语义上,localStorage 和 sessionStorage 基本没有真正的事务能力。一次 setItem 可以认为是原子写入,但不支持多条
登录后查看完整内容
