浏览器存储

本地存储相关的东西主要涉及到4个,Cookie, localStorage, sessionStorage, indexDB。简单列一张表哥来区分一下他们到分别。

特性 Cookie localStorage sessionStorage indexDB
管理 服务端设置,客户端修改和维护 客户端设置和维护 客户端设置和维护 客户端设置和维护
生命周期 可以设置具体的失效日期 除非手动删除,否则一直有效 一个会话周期内有效,(关闭tab或浏览器都会导致失效) 除非手动删除,否则一直有效
是否共享 同源下的多个tab窗口之间可以共享 同源下的多个tab窗口之间可以共享 每个tab页面下都是一个新的sessionStorage 同源下的多个tab窗口之间可以共享
接口特性 同步 同步 同步 异步
容量 4kb 5MB 5MB > 250MB
服务端交互 每次请求都会最为header带给服务端 不会随请求发送 不会随请求发送 不会随请求发送
存储类型 只能存储字符串类型的值 只能存储字符串类型的值 只能存储字符串类型的值 可以存储各种类型的值

总结

Cookie 存储容量小,且可以通过http请求和服务端进行通信,所以cookie更多是用来维持状态,例如标识登录态,服务端拿到cookie解析当前状态再决定如何响应。
localStorage和sessionStorage 在功能和接口上大致相同,不同点在于他们的生命周期和作用域,localStorage是持久存储并且支持跨窗口访问,儿sessionStorage则只能被当前窗口访问,且窗口关闭即失效。相对于indexedDB,它们都可以做少量数据的本地存储方案。而indexDB则可考虑用来实现大量结构化数据的存储