Cookie、LocalStorage 和 SessionStorage 的区别
三种浏览器存储方式的特性、使用场景和选择建议
问题
Cookie、LocalStorage 和 SessionStorage 三者之间有什么区别?
解答
生命周期
Cookie:可设置失效时间,未设置时默认关闭浏览器后失效。
LocalStorage:永久保存,除非手动清除。
SessionStorage:仅在当前会话有效,关闭页面或浏览器后清除。
存储容量
Cookie:约 4KB
LocalStorage 和 SessionStorage:约 5MB
HTTP 请求
Cookie:每次 HTTP 请求都会自动携带在请求头中,数据过多会影响性能。
LocalStorage 和 SessionStorage:仅存储在客户端,不参与服务器通信。
易用性
Cookie:原生 API 不友好,通常需要封装使用。
// Cookie 操作需要手动解析
document.cookie = "username=john; expires=Thu, 18 Dec 2025 12:00:00 UTC";
LocalStorage 和 SessionStorage:原生 API 简单易用。
// LocalStorage
localStorage.setItem('key', 'value');
localStorage.getItem('key');
localStorage.removeItem('key');
// SessionStorage
sessionStorage.setItem('key', 'value');
sessionStorage.getItem('key');
sessionStorage.removeItem('key');
作用域
Cookie:需要指定作用域,不可跨域调用,当前页面只能读取同域的 Cookie。
LocalStorage 和 SessionStorage:遵循同源策略,同域下可访问。
使用场景
Cookie:适合用户身份认证、会话管理等需要与服务器交互的场景。
LocalStorage:适合跨页面数据传递、持久化存储用户偏好设置等。
SessionStorage:适合保存临时数据,如表单数据、页面状态等,防止刷新后丢失。
关键点
- Cookie 会在每次 HTTP 请求中自动携带,而 Storage 仅存储在客户端
- LocalStorage 永久保存,SessionStorage 关闭页面即清除
- Storage 容量(5MB)远大于 Cookie(4KB)
- Cookie 适合身份认证,Storage 适合客户端数据存储
- Cookie 需要设置作用域且不可跨域,使用上限制较多
目录