Skip to content

浏览器本地存储机制详解 ​

在 Web 开发中,我们经常需要在浏览器端存储数据。常用的存储机制有三种:Cookie、LocalStorage 和 SessionStorage。

1. 基础概念 ​

Cookie 是最早的浏览器存储机制,主要用于解决 HTTP 无状态协议下的会话记录问题。当服务器向浏览器发送页面时,可以在响应头中包含 Cookie,浏览器会将其存储并在后续同源请求中自动带上。

1.2 LocalStorage ​

HTML5 引入的 Web Storage 之一,用于持久化的本地存储。除非主动删除,否则数据永远不会过期。适合存储一些长期有效的配置信息。

1.3 SessionStorage ​

Web Storage 的另一种形式,用于临时保存同一窗口(或标签页)的数据。一旦窗口或标签页关闭,数据就会被清除。

2. 核心区别对比 ​

特性CookieLocalStorageSessionStorage
数据生命周期一般由服务器生成,可设置失效时间。如果在浏览器端生成,默认是关闭浏览器后失效。永久保存,除非手动清除。仅在当前会话(窗口)有效,关闭窗口后清除。
存储大小限制4KB 左右5MB 或更大5MB 或更大
与服务端通信每次 HTTP 请求都会携带在 Header 中,影响带宽。仅在客户端保存,不参与服务端通信。仅在客户端保存,不参与服务端通信。
作用域在所有同源窗口中共享。在所有同源窗口中共享。仅在当前窗口(标签页)中有效,不可跨窗口共享。

3. Web Storage API 用法 ​

LocalStorage 和 SessionStorage 的 API 完全一致。

3.1 存储数据 ​

数据只能以字符串形式存储。

javascript
// 存储字符串
localStorage.setItem('userName', 'John');

// 存储对象(需先序列化为 JSON 字符串)
const userInfo = { name: 'John', age: 25 };
localStorage.setItem('userInfo', JSON.stringify(userInfo));

3.2 读取数据 ​

javascript
const name = localStorage.getItem('userName');

// 读取对象并反序列化
const info = JSON.parse(localStorage.getItem('userInfo'));

3.3 删除数据 ​

javascript
// 删除指定项目
localStorage.removeItem('userName');

// 清空所有存储
localStorage.clear();

4. 总结与建议 ​

  • Cookie:仅用于存储必要的会话标识(如 SessionID、Token),且应配合 HttpOnly 提升安全性。
  • LocalStorage:适用于存储用户偏好设置、缓存不常变动的非敏感数据。
  • SessionStorage:适用于存储表单临时草稿、单次会话的状态信息。

5. 参考资料 ​

方舟 · Ark