当前位置: 首页 > news >正文

localStorage 和 sessionStorage

在前端开发中,localStoragesessionStorage 都是浏览器提供的 Web Storage API,用于在客户端存储数据,但它们在生命周期和作用域上有显著区别:

核心区别总结

  1. ​生命周期​​:

    • localStorage:数据永久存储,除非手动清除(通过代码、开发者工具或浏览器设置)。
    • sessionStorage:数据仅在当前会话有效(关闭标签页或浏览器窗口后自动清除)。
  2. ​作用域​​:

    • localStorage:同源(相同协议+域名+端口)的所有标签页和窗口共享。
    • sessionStorage:仅对当前标签页有效(即使是同源的其他标签页也无法访问)。

使用场景对比

特性localStoragesessionStorage
​持久性​适合长期保存数据(如用户偏好设置)适合临时数据(如表单草稿)
​共享性​多窗口共享数据仅限单标签页独立使用
​敏感数据​不推荐(易残留)更安全(会话结束即清除)

代码示例

// 存储数据
localStorage.setItem('theme', 'dark'); // 长期保存
sessionStorage.setItem('formDraft', JSON.stringify(data)); // 临时保存// 读取数据
const theme = localStorage.getItem('theme');
const draft = JSON.parse(sessionStorage.getItem('formDraft'));// 清除数据
localStorage.removeItem('theme'); // 需手动清除
// sessionStorage 关闭标签页后自动清除

注意事项

  1. ​存储限制​​:两者通常有约 5MB 的存储上限(不同浏览器可能差异)。
  2. ​同步操作​​:会阻塞主线程,大量数据操作建议用 IndexedDB
  3. ​数据类型​​:仅支持字符串,存储对象需用 JSON.stringify() 转换。
  4. ​隐私模式​​:部分浏览器的无痕模式下可能禁用 Web Storage。

http://www.dtcms.com/a/263524.html

相关文章:

  • 编译原理——运行时存储组织与内存管理
  • Zookeeper安装使用教程
  • 回写缓存为何需要脏位?
  • SimLOD代码精读(二)建立Octree之Splitting Pass分裂阶段
  • 英国研究团队启动合成完整人类基因组的前沿项目
  • Java-包-访问修饰符-封装
  • Redis Lua 调试器(LDB)完全指南
  • 深度剖析 LNK 参数隐藏攻击 (ZDI-CAN-25373)
  • C++ Vector的使用(下)
  • 贪心算法在C++中的应用与实践
  • 基于动漫数据的可视化分析与推荐系统实现
  • Pyhton-EXCEL与Mysql数据对比
  • Monorepo+Pnpm+Turborepo
  • Vue Vue-route (1)
  • jvm的调优命令jstack打印堆栈信息阐述以及调优
  • Linux信号量
  • 基础算法合集-图论
  • 《AI的“三体进化”:数字基因与超人类思维的奇点降临》
  • Windows 11 24H2更新系统后WiFi不显示故障处理
  • AI编程实战:Cursor黑科技全解析
  • Python 数据分析与机器学习入门 (二):NumPy 核心教程,玩转多维数组
  • 【C语言】知识总结·内存函数
  • CSDN博客大搬家(本地下载markdown合适和图片本地化)
  • I/O I/O基本概念与基本I/O函数 6.30
  • Swift 实现二叉树垂直遍历:LeetCode 314 完整解析与实战示例
  • HTML之常用基础标签
  • Stable Diffusion 项目实战落地:从0到1 掌握ControlNet 第四篇 风格化字体大揭秘:从线稿到涂鸦,ControlNet让文字焕发新生
  • C#索引和范围:简化集合访问的现代特性详解
  • 湖北理元理律师事务所债务解法:从法律技术到生活重建
  • 使用nomachine远程连接ARM设备桌面