跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像AI 生图工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
JavaScript大前端

前端本地存储方案对比:localStorage、sessionStorage 与 cookie

前端本地存储主要包含 localStorage、sessionStorage 和 cookie 三种方案。localStorage 持久化存储约 5MB,不参与网络请求;sessionStorage 会话级有效,关闭页面清空;cookie 容量小仅 4KB,随 HTTP 请求自动发送。选择依据为数据生命周期、容量需求及是否需服务端通信。登录态推荐 cookie 加 HttpOnly,长期缓存用 localStorage,临时状态用 sessionStorage。

忘忧发布于 2026/4/10更新于 2026/7/2345 浏览
前端本地存储方案对比:localStorage、sessionStorage 与 cookie

在前端开发中,数据本地存储是提升用户体验、优化性能、实现持久化状态的核心技术。我们最常用的就是 localStorage、sessionStorage 和 cookie 这三种方案,但很多开发者容易混淆它们的用法、存储特性和适用场景。

一、先搞懂核心概念

  • cookie:最早的客户端存储方案,会随 HTTP 请求自动发送到服务器,主要用于身份验证、会话保持。
  • localStorage:HTML5 新增的本地存储,持久化存储,手动清除才会消失,不参与网络请求。
  • sessionStorage:HTML5 新增的会话存储,页面会话期间有效,关闭标签页 / 浏览器就清空。

二、核心区别一张表看懂

特性localStoragesessionStoragecookie
生命周期永久有效,手动清除仅当前会话(关闭标签 / 浏览器失效)可设置过期时间,默认会话级
存储容量约 5MB约 5MB很小,仅 4KB
与服务端通信不参与不参与自动携带在 HTTP 请求头中
访问权限同源(协议 + 域名 + 端口)共享同源 + 同一标签页 共享同源共享
API 易用性简单,键值对 API简单,键值对 API原生 API 繁琐,需手动封装
安全性较高,不发往服务器较高,不发往服务器需配置 HttpOnly/Secure 防攻击
数据类型仅支持 字符串仅支持 字符串仅支持 字符串

一句话总结:存大量数据用 localStorage,临时会话用 sessionStorage,需要给服务器传的状态用 cookie。

三、基础用法速查(代码示例)

三者都是键值对存储,且只能存字符串,复杂对象需用 JSON 转换。

1. localStorage
// 存
localStorage.(, );
.(, .({ :  }));


 name = .();
 user = .(.());


.();


.();
setItem
'username'
'张三'
localStorage
setItem
'userInfo'
JSON
stringify
age
20
// 取
const
localStorage
getItem
'username'
const
JSON
parse
localStorage
getItem
'userInfo'
// 删单个
localStorage
removeItem
'username'
// 清空全部
localStorage
clear
2. sessionStorage

API 和 localStorage 完全一致,唯一区别是生命周期:

sessionStorage.setItem('token', '临时令牌'); // 关闭页面立即消失
3. cookie(原生写法)

原生 API 比较繁琐,推荐封装或用库:

// 设置 cookie(带 7 天过期时间)
document.cookie = "username=张三; max-age=" + 60*60*24*7;

// 获取 cookie
const cookie = document.cookie;

// 删除 cookie(设置过期时间为过去)
document.cookie = "username=; max-age=0";

四、关键差异深度解析

1. 生命周期(最重要)
  • localStorage:真正的持久化存储,重启浏览器、关机都不会丢。
  • sessionStorage:临时存储,只要标签页一关,数据立刻清空。
  • cookie:灵活可控,可设置 max-age/expires 定义过期时间。
2. 存储容量
  • cookie:4KB —— 只能存少量文本(token、id)。
  • storage:5MB —— 可存大量前端数据(缓存列表、用户配置)。
3. 网络通信(核心区别)
  • cookie:每次请求都会自动带到服务端,浪费流量,影响性能。
  • localStorage/sessionStorage:不参与通信,纯前端本地使用。
4. 安全性
  • cookie:不配置 HttpOnly 时,JS 可读取,容易被 XSS 攻击;
  • storage:不会自动发送到服务器,相对更安全,但仍需防范 XSS。

五、实际开发怎么选?(最佳实践)

✅ 使用 localStorage 的场景
  • 长期保存用户偏好设置(主题、语言、列表布局)
  • 前端缓存大量数据(商品列表、搜索历史)
  • 不需要传给服务端的持久化状态
✅ 使用 sessionStorage 的场景
  • 表单临时数据(防止刷新丢失,关闭页面自动清空)
  • 单页应用路由状态、临时令牌
  • 同一页面会话内的临时数据
✅ 使用 cookie 的场景
  • 登录态、身份认证 Token(必须让服务端识别)
  • 需要跨页面、跨浏览器持久化且传给后端的数据
  • 服务端需要读取的客户端状态

六、避坑小贴士

  1. 三者都只能存字符串,对象 / 数组必须用 JSON.stringify 存,JSON.parse 取。
  2. cookie 别存大量数据,会严重影响请求性能。
  3. sessionStorage 不跨标签页,打开新页面数据不共享。
  4. localStorage 永久存储,敏感信息不要存(密码、密钥)。
  5. 登录认证优先用 cookie + HttpOnly,安全性最高。

总结

  • localStorage:持久化、大容量、纯本地存储
  • sessionStorage:临时会话、大容量、页面关闭即清空
  • cookie:可过期、小容量、自动传服务端、用于登录认证

掌握这三种存储方案,你就能在前端开发中灵活处理数据持久化,写出更稳定、更高效的代码。

目录

  1. 一、先搞懂核心概念
  2. 二、核心区别一张表看懂
  3. 三、基础用法速查(代码示例)
  4. 1. localStorage
  5. 2. sessionStorage
  6. 3. cookie(原生写法)
  7. 四、关键差异深度解析
  8. 1. 生命周期(最重要)
  9. 2. 存储容量
  10. 3. 网络通信(核心区别)
  11. 4. 安全性
  12. 五、实际开发怎么选?(最佳实践)
  13. ✅ 使用 localStorage 的场景
  14. ✅ 使用 sessionStorage 的场景
  15. ✅ 使用 cookie 的场景
  16. 六、避坑小贴士
  17. 总结
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • OpenArm 开源协作机器人架构设计与实践
  • 预训练语言模型与 BERT 实战应用
  • STC 单片机摄像头组别高效搜线算法与帧率优化方案
  • AI 提示词模板:3 分钟生成 3000 字电商产品详情页文案
  • Linux 系统 Git 安装配置与常见问题排查
  • 10 分钟搭建专属 AI Agent:从零到落地全流程实操
  • 零基础转行AI产品经理:核心能力与职业发展指南
  • JDK-17 安装与配置教程
  • C++ STL list 容器详解与模拟实现
  • 前端 AI 应用:浏览器中的机器学习模型
  • 华为机试题解:素数伴侣(最大二分图匹配)
  • Java 项目构建与管理:Maven 核心实战指南
  • Llama-3.2-3B 对比 Qwen2-1.5B:Ollama 部署与摘要 BLEU 实测
  • Flutter 三方库 huggingface_client 的鸿蒙化适配指南
  • Cursor 中配置与使用 MCP 服务实战指南
  • 红黑树原理及在C++ map与set中的应用
  • Rokid JSAR 实战指南:Web 技术栈 AR 开发环境搭建与 3D 时钟项目详解
  • 企业级 AI Agent 全栈架构蓝图:从聊天机器人到智能自动化落地
  • Ψ0 人形全身 VLA:基于人类视频预训练与 MM-DiT 后训练方案
  • CarelessWhisper: 将 Whisper 改造为因果流式语音识别模型

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online