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

浏览器的存储机制 - Storage

浏览器的存储机制 - Storage

    • 前言
    • 一、核心概念与区别
    • 二、常用 API
      • 1、存储数据(setItem(key, value))
      • 2、 获取数据(getItem(key))
      • 3、删除单个数据(removeItem(key))
      • 4、清空所有数据(clear())
    • 5、遍历所有键(key(index) 或 Object.keys())
    • 三、使用场景
      • LocalStorage
      • SessionStorage
    • <font color=red> 四、注意事项
      • 1、数据类型限制
      • 2、安全性
      • 3、 性能与使用建议
    • 五、与 Cookie 的对比
    • 总结

前言

在前端开发中,Storage 是浏览器提供的用于在客户端存储数据的机制,包括 LocalStorageSessionStorage。它们通过 Window 对象的属性暴露,支持以**键值对**形式存储数据,适用于
不需要频繁与服务器交互 的轻量级数据存储。

位置在 F12开发者工具 ——》 Application ——》 Storage
在这里插入图片描述

一、核心概念与区别

在这里插入图片描述

二、常用 API

两者的 API 完全一致,通过 window.localStoragewindow.sessionStorage 调用。

1、存储数据(setItem(key, value))

// 存储字符串
localStorage.setItem('theme', 'dark'); // LocalStorage
sessionStorage.setItem('searchQuery', '前端'); // SessionStorage// 存储对象(需先转为JSON字符串)
const user = { id: 1, name: 'Alice' };
localStorage.setItem('user', JSON.stringify(user));

2、 获取数据(getItem(key))

const theme = localStorage.getItem('theme'); // "dark"
const searchQuery = sessionStorage.getItem('searchQuery'); // "前端"// 解析JSON对象
const user = JSON.parse(localStorage.getItem('user')); // { id: 1, name: 'Alice' }

3、删除单个数据(removeItem(key))

localStorage.removeItem('theme'); // 删除LocalStorage中的theme键
sessionStorage.removeItem('searchQuery'); // 删除SessionStorage中的searchQuery键

4、清空所有数据(clear())

localStorage.clear(); // 清空当前域名下的所有LocalStorage数据
sessionStorage.clear(); // 清空当前标签页的所有SessionStorage数据

5、遍历所有键(key(index) 或 Object.keys())

// 方法1:通过索引遍历(兼容性好)
for (let i = 0; i < localStorage.length; i++) {const key = localStorage.key(i); // 获取第i个键名const value = localStorage.getItem(key);console.log(`${key}: ${value}`);
}// 方法2:转为对象遍历(ES6+)
const storageKeys = Object.keys(localStorage);
storageKeys.forEach(key => {const value = localStorage.getItem(key);
});

三、使用场景

LocalStorage

  1. 持久化用户配置:记住用户的主题偏好、语言设置等。
  2. 缓存简单数据:缓存频繁访问但不敏感的数据(如登录令牌,需配合安全措施)。
  3. 离线功能:配合 Service Worker 实现离线应用的数据存储。

SessionStorage

  • 临时表单数据:存储用户在当前页面填写的表单数据,防止刷新页面丢失。
  • 单页应用(SPA)状态:存储当前路由的临时状态(如搜索条件),避免路由切换时数据丢失。
  • 敏感数据临时存储:存储一次性使用的敏感数据(如临时验证码),关闭页面后自动清除。

四、注意事项

1、数据类型限制

  • 仅支持存储 字符串,存储对象或数组时需通过 JSON.stringify()JSON.parse() 转换:
// 错误:直接存储对象会转为 [object Object]
localStorage.setItem('user', { name: 'Alice' }); // 正确:先序列化
localStorage.setItem('user', JSON.stringify({ name: 'Alice' }));

2、安全性

  1. 不加密存储:数据以明文存储,禁止存储敏感信息(如密码、支付信息)。
  2. 同源策略:仅同域名下的页面可访问,不同子域名也无法共享(如 a.example.com 和 b.example.com 不共享)。
  3. XSS 风险:存储的数据可能被恶意脚本读取,需避免信任不可控的输入。

3、 性能与使用建议

  1. 同步阻塞:API 为同步操作,大量数据存储可能阻塞主线程,建议分批次处理。
  2. 存储容量限制:避免存储过大数据,超出限制会抛出 QuotaExceededError 异常。
  3. 监听数据变化:可通过 storage 事件监听同一域名下其他窗口的存储变化(SessionStorage 不触发此事件):
window.addEventListener('storage', (event) => {console.log(`${event.key} 的值从 ${event.oldValue} 变为 ${event.newValue}`);
});

五、与 Cookie 的对比

在这里插入图片描述

总结

LocalStorage 和 SessionStorage 是前端轻量级存储的核心工具,适用于
非敏感数据 的持久化或临时存储。使用时需注意数据类型转换、安全性和存储容量,结合业务场景选择合适的存储方式。

http://www.xdnf.cn/news/15103.html

相关文章:

  • 元宇宙概念兴起,B 端数字孪生迎来哪些新机遇?
  • leetcode-sql数据库面试题冲刺(高频SQL五十题)
  • 03、GPIO外设(三):标准库代码示例
  • 第11篇:Linux程序访问控制FPGA端HEX<四>
  • 服务器架构:SMP、NUMA、MPP及Docker优化指南
  • U盘实现——双盘符实现
  • GoogleCodeUtil.java
  • Next.js 技术详解:构建现代化 Web 应用的全栈框架
  • ArcPy工具箱制作(下)
  • 51单片机实验一:点亮led灯
  • 每日一题---移动零
  • 第六章 进阶04 尊重
  • GreatSQL启动崩溃:jemalloc依赖缺失问题排查
  • 获取印度股票市场列表、查询IPO信息以及通过WebSocket实时接收数据
  • Git合并分支的两种常用方式`git merge`和`git cherry-pick`
  • 裸金属服务器有什么用途?
  • 数据仓库分层架构解析:从理论到实战的完整指南​​
  • 1. python开发小笔记
  • 【Semantic Kernel核心组件】planner:大模型时代的智能任务编排引擎
  • ASP.NET常见安全漏洞及修复方式
  • ARINC818协议(五)
  • xxljob 执行器流程-笔记
  • PHP腾讯云人脸核身生成 SDK 接口调用步骤使用签名
  • Vue3中provide和inject的用法示例
  • opencv函数展示3
  • Git LFS 学习笔记:原理、配置、实践与心路历程
  • 直播人脸美型核心技术详解:卷积神经网络与图像增强在美颜SDK中的应用
  • pdfjs库使用记录1
  • Web3区块链网络中数据隐私安全性探讨
  • 深度解析生成对抗网络:原理、应用与未来趋势