localstorage是前端浏览器本地持久化存储,数据存客户端、不传服务器、容量约5mb、生命周期永久;session是后端服务器维护的会话状态,数据存服务端、依赖session id(常通过cookie传递)、生命周期由服务端控制、支持任意类型数据。

localStorage 和 Session 是两类完全不同的机制,根本不在同一层面:localStorage 是纯前端的浏览器本地存储 API,Session 是后端服务器维护的会话状态管理机制。它们没有可比性,但常被混淆——关键在于“谁存、存哪、怎么用”。
localStorage 是浏览器本地的持久化键值存储
它运行在用户设备的浏览器中,不与服务器通信,数据以字符串形式保存在本地磁盘(除非手动清除)。所有同源页面(协议+域名+端口一致)共享同一份 localStorage 数据。
- 生命周期永久:关闭浏览器、重启电脑都不丢失,必须调用
localStorage.removeItem()或localStorage.clear()才能删除 - 容量约 5MB,仅支持字符串;存对象需先
JSON.stringify(),读取时再JSON.parse() - 不参与 HTTP 请求:不会随每次请求自动发送给服务器,无网络开销,也无服务端感知能力
- 典型用途:记住主题偏好、未提交的表单草稿、离线缓存配置项等非敏感、非身份类数据
Session 是服务器端维护的用户会话状态容器
Session 数据始终保存在服务器内存、数据库或 Redis 等后端存储中,客户端只持有用于识别它的 session ID(通常通过 Cookie 传递)。服务器靠这个 ID 查找并关联对应用户的会话数据。
- 生命周期由服务端控制:默认超时时间(如 PHP 的
session.gc_maxlifetime,Express 中的cookie.maxAge),超时或用户登出即销毁 - 可存储任意类型数据(对象、数组、文件句柄等),不受字符串限制
- 依赖客户端配合:通常靠 Cookie 自动携带 session ID;禁用 Cookie 时需改用 URL 重写等方式传递 ID
- 典型用途:用户登录态、购物车内容、多步流程中间状态等需要服务端校验和强一致性的场景
二者根本不在一个技术域里
localStorage 没有“服务器端实现”,它压根不经过服务器;Session 没有“浏览器本地存储”,它的数据从不直接暴露给前端。把它们放在一起对比,就像比较“记事本文件”和“银行账户余额”——前者是你本地随手记的便签,后者是银行系统里受监管、带事务、需鉴权的真实资产记录。
真正和 localStorage 存储位置可比的是 Cookie(都存浏览器);真正和 Session 作用可比的是 JWT(都用于身份会话管理,只是实现方式不同)。










