大家好,Echa 。
今天来分享常见的浏览器数据存储方案:localStorage、sessionStorage、IndexedDB、Cookies 。
1. 概述现代浏览器中提供了多种存储机制,打开浏览器的控制台(mac 可以使用 Command + Option + J 快捷键,windows 可以使用 Control + Shift + J 快捷键) 。选择 Application 选项卡,可以在 Storage中 看到 Local Storage、Session Storage、IndexedDB、Web SQL、Cookies 等:
文章插图
那数据存储在浏览器中有什么使用场景呢?在以下情况下,将数据存储在浏览器中成为更可行的选择:
- 在浏览器存储中保存应用状态,比如保持用户偏好(用户特定的设置,例如亮模式或暗模式、字体大小等);
- 创建离线工作的渐进式 Web 应用,除了初始下载和更新之外没有服务器端要求;
- 缓存静态应用资源,如 html、css、JS 和图像等;
- 保存上一个浏览会话中的数据,例如存储上一个会话中的购物车内容,待办事项列表中的项目,记住用户是否以前登录过等 。
所以下面我们将介绍 Local Storage、Session Storage、IndexedDB、Cookies 的使用方式、使用场景以及它们之间的区别 。
2. Web Storage(1)概述HTML5 引入了 Web Storage,这使得在浏览器中存储和检索数据变得更加容易 。Web Storage API 为客户端浏览器提供了安全存储和轻松访问键值对的机制 。Web Storage 提供了两个 API 来获取和设置纯字符串的键值对:
- localStorage:用于存储持久数据,除非用户手动将其从浏览器中删除,否则数据将终身存储 。即使用户关闭窗口或选项卡,它也不会过期;
- sessionStorage:用于存储临时会话数据,页面重新加载后仍然存在,关闭浏览器选项卡时数据丢失 。
- setItem() :用于存储数据,它有两个参数,即key和value 。使用形式:localStorage.setItem(key, value);
- getItem():用于检索数据,它接受一个参数 key,即需要访问其值得键 。使用形式:localStorage.getItem(key);
- removeItem():用于删除数据,它接受一个参数 key,即需要删除其值得键 。使用形式:localStorage.removeItem(key);
- clear() :用于清除其中存储的所有数据,使用形式:localStorage.clear();
- key():该方法用于获取 localStorage 中数据的所有key,它接受一个数字作为参数,该数字可以是 localStorage 项的索引位置 。
console.log(typeof window.localStorage) // Object// 存储数据localStorage.setItem("colorMode", "dark")localStorage.setItem("username", "zhangsan")localStorage.setItem("favColor", "green")console.log(localStorage.length) // 3// 检索数据console.log(localStorage.getItem("colorMode")) // dark// 移除数据localStorage.removeItem("colorMode")console.log(localStorage.length) // 2console.log(localStorage.getItem("colorMode")) // null// 检索键名window.localStorage.key(0); // favColor// 清空本地存储localStorage.clear()console.log(localStorage.length) // 0
localStorage 和 sessionStorage 都非常适合缓存非敏感应用数据 。可以在需要存储少量简单值并不经常访问它们是使用它们 。它们本质上都是同步的,并且会阻塞主 UI 线程,所以应该谨慎使用 。(3)存储事件我们可以在浏览器上监听 localStorage 和 sessionStorage 的存储变化 。storage 事件在创建、删除或更新项目时触发 。侦听器函数在事件中传递,具有以下属性:
- newValue:当在存储中创建或更新项目时传递给 setItem() 的值 。当从存储中删除项目时,此值设置为 null 。
- oldValue:创建新项目时,如果该键存在于存储中,则该项目的先前的值 。
- key:正在更改的项目的键,如果调用 .clear(),则值为 null 。
- url:执行存储操作的 URL 。
- storageArea:执行操作的存储对象(localStorage 或 sessionStorage) 。
推荐阅读
- 六种常见妇科炎症 妇科炎症用什么药好
- 陶渊明的最经典10句诗,陶渊明的经典诗句精选-
- 约翰尼·德普|知名女星街头大便,裤子拉到大腿下,好友坐旁边与其聊天
- 沉头螺钉操作方法及常见问题 开槽沉头螺钉!
- 中速磨常见故障现象及处理 中速磨常见故障
- 过敏性鼻炎的症状有哪些常见表现 过敏性鼻炎的症状
- 电脑常见故障排查及维修方法 电脑故障检测
- 常见妇科病 常见妇科病的症状
- 鲍鱼养殖技术流程及常见病害的防治 鲍鱼养殖
- 乳腺增生的六种常见中成药 乳腺增生吃啥药