前端存储三剑客:localStorage、sessionStorage、cookie 超详细对比

前端存储三剑客:localStorage、sessionStorage、cookie 超详细对比

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

这篇博客就用最清晰、最实用的方式,一次性讲透三者的区别、用法和最佳实践。


一、先搞懂核心概念

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

二、核心区别一张表看懂

表格

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

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

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

1. localStorage

javascript

运行

// 存 localStorage.setItem('username', '张三'); localStorage.setItem('userInfo', JSON.stringify({ age: 20 })); // 取 const name = localStorage.getItem('username'); const user = JSON.parse(localStorage.getItem('userInfo')); // 删单个 localStorage.removeItem('username'); // 清空全部 localStorage.clear(); 

2. sessionStorage

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

javascript

运行

sessionStorage.setItem('token', '临时令牌'); // 关闭页面立即消失 

3. cookie(原生写法)

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

javascript

运行

// 设置 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 的场景

  • 表单临时数据(防止刷新丢失,关闭页面自动清空)
  • 单页应用路由状态、临时令牌
  • 同一页面会话内的临时数据
  • 登录态、身份认证 Token(必须让服务端识别)
  • 需要跨页面、跨浏览器持久化且传给后端的数据
  • 服务端需要读取的客户端状态

六、避坑小贴士

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

总结

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

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


总结

  1. localStorage 适合长期本地缓存,容量大、不发服务器;
  2. sessionStorage 适合临时会话数据,关闭页面自动清空;
  3. cookie 适合需要传给服务端的状态(如登录),容量小、可设置过期。

Read more

OpenClaw Skills扩展:nanobot通过webhook对接钉钉/飞书,实现跨平台消息同步

OpenClaw Skills扩展:nanobot通过webhook对接钉钉/飞书,实现跨平台消息同步 1. nanobot简介 nanobot是一款受OpenClaw启发的超轻量级个人人工智能助手,仅需约4000行代码即可提供核心代理功能。相比传统方案,代码量减少了99%,但功能依然强大。 这个轻量级助手内置了vllm部署的Qwen3-4B-Instruct-2507模型,使用chainlit进行推理交互。最吸引人的是,你可以轻松配置它作为QQ聊天机器人使用,或者通过webhook对接企业通讯工具如钉钉和飞书。 2. 基础环境验证 2.1 检查模型服务状态 在开始扩展功能前,我们需要确认基础服务运行正常。通过以下命令检查模型部署状态: cat /root/workspace/llm.log 如果看到服务启动成功的日志信息,说明模型已准备就绪。常见的成功标志包括"Model loaded successfully"或"Service started on port xxxx"等提示。 2.2 测试基础问答功能

【详细精选】前端面试题(2026精选附详细解答)包含10w数据展示优化、前端核心

【详细精选】前端面试题(2026精选附详细答案)包含10w数据展示优化、前端核心 * 前端面试题详细解答 * 1. ES6新特性详解(重要10个) * 核心特性 * 其他重要特性 * 2. 什么是跨域 * 同源策略 * 跨域解决方案 * 1.CORS(跨域资源共享) * 2.JSONP * 3. 代理服务器 * 4. WebSocket * 5. Nginx反向代理 * 3. 监听数组变化 * Vue2的实现原理 * Vue3的实现原理 * 4. v-if vs v-show * 原理对比 * 差异对比表 * 源码分析 * 5. 网页加载优化 * 性能指标(Core Web Vitals) * 优化策略 * 1. 代码优化 * 2. 资源优化 * 3. 缓存策略

B站PC端web自动开启字幕脚本(2026新版适配)

B站自动字幕用户脚本:快捷键开关 + 自动开启字幕(2026新版适配) 作者:Apixus 更新日期:2026年3月5日 项目地址:GitHub仓库 一、脚本介绍 你是否经常在B站看视频时反复手动开启字幕?是否希望切换视频时字幕能自动开启? 这个用户脚本就是为了解决这些问题而开发的。 B站自动字幕脚本 提供了以下功能: * 🎯 快捷键控制:按 C 键快速开启或关闭字幕 * 🔄 自动开启:切换分P、点击推荐视频时自动打开字幕 * 🆕  2026新版适配:专为B站最新版播放器优化 * ⚡ 性能优化:智能监听,告别卡顿轮询 * 🛡️ 防冲突:自动识别输入框,避免误触 二、适用页面 * 普通视频页:https://www.bilibili.com/video/* * 播放列表页:https://www.bilibili.com/list/* 支持普通视频页、番剧页、播放列表页等常见场景。 三、

CVE-2026-21962漏洞利用工具:Oracle WebLogic代理插件未授权RCE检测与利用

CVE-2026-21962 - Oracle WebLogic Server Proxy Plug-In RCE 项目描述 该项目提供了一个针对Oracle WebLogic Server代理插件(Proxy Plug-In)中一个关键安全漏洞(CVE-2026-21962)的漏洞利用概念验证(PoC)脚本。该漏洞允许未经验证的远程攻击者通过HTTP协议在受影响的服务器上执行任意操作系统命令,风险等级极高(CVSS 10.0)。 影响组件: * Oracle HTTP Server(版本12.2.1.4.0、14.1.1.0.0、14.1.2.0.0) * Oracle WebLogic Server代理插件(用于Apache HTTP Server和Microsoft IIS)