Appearance
浏览器存储:Cookie、localStorage、sessionStorage、IndexedDB 与配额边界
主题边界
- 浏览器存储题的重点不是背“Cookie 4KB、localStorage 几 MB”,而是理解每种存储的生命周期、访问方式、可见范围和安全属性。
- 同样的数据放错介质,可能带来阻塞、同步成本、泄漏风险或多标签页一致性问题。
机制与流程
- Cookie 会随同域请求自动携带,适合会话标识和服务端读取场景;localStorage / sessionStorage 仅由前端脚本显式读写。
- localStorage 和 sessionStorage 都是同步 API,直接阻塞主线程;IndexedDB 是异步事务式存储,更适合大数据量和结构化数据。
- sessionStorage 的作用域是标签页级,localStorage 是同源持久化,Cookie 还带有 SameSite、HttpOnly、Secure 等属性。
关键差异
- Cookie 的核心不是小,而是它位于请求链路里;localStorage 的核心不是大,而是它仅在客户端可见且同步阻塞。
- IndexedDB 解决的是容量和结构化访问问题,不是“localStorage 的升级版快捷替代”。
边界条件
- 把敏感 Token 无脑放 localStorage 会放大 XSS 影响面;把大块业务状态塞 Cookie 会增加每次请求开销。
- storage event 只能覆盖部分同步场景,多标签页复杂一致性仍可能需要 BroadcastChannel 或 Service Worker 协调。
工程落点
- 鉴权、草稿保存、离线缓存、用户偏好和大对象本地索引,分别对应不同存储介质。
- 这道题和 XSS、CSRF、Cookie 属性、IndexedDB 事务、bfcache 都很容易串成追问链。