sessionStorage用于单标签页会话期间临时存储数据,关闭标签页即清除;localStorage则持久保存于同源所有标签页,需手动清除。

sessionStorage 是浏览器提供的一种前端本地存储机制,用于在**当前浏览器标签页的会话周期内**临时保存数据。只要这个标签页没关闭,即使刷新页面、跳转到同域其他页面,数据依然存在;一旦关闭该标签页(或窗口),所有 sessionStorage 数据立即被清除。
核心区别:生命周期和作用域
这是两者最本质的差异:
- sessionStorage:数据绑定到“单个标签页”,关掉这个标签页就清空;不同标签页之间完全隔离,哪怕打开的是同一个网址,彼此也读不到对方的 sessionStorage。
-
localStorage:数据绑定到“整个域名”,只要协议、域名、端口相同,所有同源标签页共享同一份数据;关闭标签页或浏览器都不影响数据,除非手动调用
removeItem或clear,或者用户主动清除站点数据。
适用场景对比
选哪个,关键看你要存什么、存多久、在哪用:
- 用 sessionStorage 存临时状态:比如多步骤表单中途填写的内容、页面滚动位置、未提交的草稿、一次性的登录凭证(如 OAuth 临时 token)——这些不需要跨标签页,也不需要第二天还在。
- 用 localStorage 存持久偏好:比如用户主题设置(深色/浅色)、语言选择、已读文章标记、购物车(非登录态下)、播放历史等——希望下次打开网站时还能延续体验。
使用方式几乎一样,但不能混用
两者 API 完全一致:
YXPHP6系统可以看做是一个模版平台,而且它又能独立工作. 而且YXPHP6系统也不需要数据库支持. 你可以开发自己的模板,也可以同步官方的模板后进行自己的二次开发,前提是您对YXPHP6要有一定的了解.YXPHP6不仅可以用作企业建站,甚至是blog,只要是您能想到的,YXPHP6几乎都可以胜任. 因为YXPHP6系统本身与模板之间可以说是独立运行的.也就是说,不管你做什么样的网站或者是应用,
立即学习“Java免费学习笔记(深入)”;
sessionStorage.setItem('key', 'value')localStorage.setItem('key', 'value')- 都只支持字符串值,存对象需先
JSON.stringify(),取的时候再JSON.parse() - 都受同源策略限制:不同域名、协议或端口之间无法互相访问
安全与容量注意点
它们都不发给服务器,不参与 HTTP 请求,所以比 Cookie 更轻量、更隐私:
- 容量通常都是约 5MB(远大于 Cookie 的 4KB),但具体上限因浏览器而异。
- 敏感信息(如密码、长期有效的 token)不建议直接存 sessionStorage 或 localStorage,因为 XSS 攻击可能读取它们;短期、低敏感度的一次性凭证可酌情使用 sessionStorage。
- 移动端 WebView 中,sessionStorage 表现不稳定(比如页面跳转被视作新会话),此时更适合用 localStorage + 显式清理逻辑替代。










