sessionstorage数据有效期严格绑定单个标签页生命周期,打开即存在、关闭即清空;页面刷新、跳转、崩溃恢复均保留,但跨标签页完全隔离,仅支持字符串存储,需json序列化对象。

sessionStorage 的数据有效期完全由“标签页会话”决定,不是按时间计时,而是绑定于单个浏览器标签页的生命周期——打开即存在,关闭即清空。
有效期只看标签页是否关闭
只要这个标签页没被关闭,哪怕页面刷新几十次、跳转到其他网站再返回、甚至浏览器意外崩溃后恢复该标签页,数据都还在。真正触发清除的,是任何形式的标签页关闭操作:
- 点击右上角 × 或使用 Ctrl+W / Cmd+W
- 右键菜单选择“关闭标签页”
- 把标签页拖出窗口变成独立窗口后,再关掉那个窗口
- 整个浏览器进程结束(比如强制退出)
不跨标签页,也不跨窗口
即使两个标签页同时打开同一个网址,它们的 sessionStorage 是完全隔离的。A 标签页存的数据,B 标签页读不到;新开一个窗口访问同一页面,也是全新的一份 sessionStorage。这种隔离性让它天然适合存放仅当前操作流程需要的临时状态。
下载 Comet AI 浏览器,体验由 Perplexity AI 驱动的革命性上网方式。内置 AI 助手可实时总结网页、跨标签页对比信息、自动执行任务。告别繁琐操作,让 AI 成为你的浏览副驾,大幅提升研究与工作效率。支持 Windows、macOS、Android 和 iOS。
存什么?怎么存?有啥限制?
它只接受字符串,所以存对象或数组必须先 JSON.stringify,取出来再 JSON.parse:
- 容量上限约 5MB(多数浏览器),足够放表单草稿、筛选条件、临时 token 等
- 不能存函数、undefined、Symbol 或 DOM 节点等非可序列化值
- 不随 HTTP 请求发送,不参与网络传输,比 Cookie 更轻量安全
- 同源策略仍适用:不同协议/域名/端口之间互不可见
和 localStorage、Cookie 的关键区别在哪
不用记概念,记住三个典型场景就能分清:
- 用户刚填了两步注册表单,还没提交,想关掉页面又怕丢——用 sessionStorage,下次打开新标签页就没了,但刷新或暂时离开再回来还在
- 用户选了深色模式,希望下次打开还生效——用 localStorage,关掉浏览器再开也保留
- 登录成功后服务器发了个 session ID 给浏览器,后续每次请求都要带上——用 Cookie,它自动随请求走,且能设 HttpOnly 防 XSS










