前端存储三剑客: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

字节开源 DeerFlow 2.0——登顶 GitHub Trending 1,让 AI 可做任何事情

字节开源 DeerFlow 2.0——登顶 GitHub Trending 1,让 AI 可做任何事情

打开 deerflow 的官网,瞬间被首页的这段文字震撼到了,do anything with deerflow。让 agent 做任何事情,这让我同时想到了 openclaw 刚上线时场景。 字节跳动将 DeerFlow 彻底重写,发布 2.0 版本,并在发布当天登上 GitHub Trending 第一名。这不是一次功能迭代,而是一次从"深度研究框架"到"Super Agent 运行时基础设施"的彻底蜕变。 背景:从 v1 到 v2,发生了什么? DeerFlow(Deep Exploration and Efficient Research Flow)

Flutter 组件 tavily_dart 的适配 鸿蒙Harmony 深度进阶 - 驾驭 AI 原生聚合搜索、实现鸿蒙端跨域知识发现与垂直领域语义降噪方案

Flutter 组件 tavily_dart 的适配 鸿蒙Harmony 深度进阶 - 驾驭 AI 原生聚合搜索、实现鸿蒙端跨域知识发现与垂直领域语义降噪方案

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net Flutter 组件 tavily_dart 的适配 鸿蒙Harmony 深度进阶 - 驾驭 AI 原生聚合搜索、实现鸿蒙端跨域知识发现与垂直领域语义降噪方案 前言 在前文中,我们领略了 tavily_dart 在鸿蒙(OpenHarmony)生态中实现基础互联网 AI 搜索集成的魅力。但在真正的“跨国科研智能辅助”、“政务决策舆情态势感知”以及“需要接入高精密专业数据库”的场景中。简单的单次查询往往不足以触达知识的核心。面对需要在大规模并发环境下,针对特定行业域名(如 .gov / .edu)执行深层内容的并行嗅探,并且要求对回显的数万字内容执行基于 AI 强语义的重排序(Re-ranking)与引用链路审计的高阶需求。如果缺乏一套完善的聚合搜索策略与语义降噪模型。不仅会导致 AI 智能体出现由于“信息泛滥”

AI + 鸿蒙游戏,会不会是下一个爆点?

AI + 鸿蒙游戏,会不会是下一个爆点?

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名) 大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。 我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案, 在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。 技术方向:前端 / 跨端 / 小程序 / 移动端工程化 内容平台:掘金、知乎、ZEEKLOG、简书 创作特点:实战导向、源码拆解、少空谈多落地 文章状态:长期稳定更新,大量原创输出 我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、

AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题

AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题

AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题 AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题,本文介绍了如何利用豆包平台打造专属Python智能管家。首先简述豆包平台的核心优势,接着说明创建前的准备工作,包括注册账号、明确定位和收集训练资料。随后详细讲解创建流程,从新建智能体、基础设置、能力配置到测试优化,还提及集成代码执行环境等高级功能扩展,以及使用技巧与实际应用案例。该智能官能解决多种Python编程问题,可提升学习效率和问题解决速度,是实用的个性化编程助手。 前言     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触 AI 的新手,还是有一定基础想提升的人,都能在这里找到合适的内容。从最基础的工具操作方法,到背后深层的技术原理,专栏都有讲解,还搭配了实例教程和实战案例。这些内容能帮助学习者一步步搭建完整的 AI 知识体系,让大家快速从入门进步到精通,