真正的浏览器磁盘缓存 LocalStorage

存储 存储软件
前面我们学习了 cookie 和 sessionStorage,他们都具有存储功能,但各有各的用途。今天我们学习 LocalStorage,它才是真正的缓存机制,也就是我们通常说的磁盘缓存。

 [[349227]]

前面我们学习了 cookie 和 sessionStorage,他们都具有存储功能,但各有各的用途。今天我们学习 LocalStorage,它才是真正的缓存机制,也就是我们通常说的磁盘缓存,他可以做到在这些场景下数据丢失:

  • 刷新页面;
  • 切换 tab;
  • 关闭浏览器;

它和 sessionStorage 一样,都是 Storage 的实例。要访问同一 localStorage 的数据时,要保证协议、域名和端口都一致才能够访问。

它与 sessionStorage 使用一致:

 

  1. // 增加一条数据 
  2. localStorage.setItem('name''公众号素燕'); 
  3. localStorage.setItem('logo''前端小课, 帮助 10W 人入门并进阶前端'); 
  4.  
  5. // 获取一条数据,key 为 name 
  6. console.log(localStorage.getItem('name')); 
  7. // 获取第一条数据的 key 
  8. console.log(localStorage.key(0)); 
  9. // 删除一条数据,key 为 logo 
  10. localStorage.removeItem('logo'

保存在 localStorage 的数据不会自动清除,除非通过代码清除,或者清除浏览器的缓存。但是它又有限制,比如有些浏览器限制最大只能存储 5MB。你可以在浏览器调试模式(Inspect)下打开的 Application -> Local Storage 中查看存储的内容,也可以修改。

监听事件

无论是 sessionStorage 还是 localStorage,当数据发生变化时都能够监听到,我们以 localStorage 为例来监听一下 Storage 的事件。需要注意一点,这种事件监听在同一页面并不会监听到事件。比如:

A页面:

访问 http://localhost:2081/cookie/cookie.html ,如果在这个页面接收监听到事件,必须在另一个同一地址的页面进行修改 storage 才能触发。在当前页面修改 localStorage 即使页面中加了监听事件,也不会接收到事件。在 A 页面中添加监听事件:

 

  1. window.addEventListener('storage', event => { 
  2.     alert('change'); 
  3.     console.log(event); 
  4. }); 

B页面:

访问 http://localhost:2081/cookie/cookie.html ,如果对 localStorage 进行了修改,A页面将收到 storage 被修改的事件。

 

  1. localStorage.setItem('name''公众号素燕'); 
  2. localStorage.clear(); 
  3. localStorage.removeItem('name'); 

同样,监听事件也适用于 sessionStorage。

责任编辑:华轩 来源: 素燕
相关推荐

2022-03-24 08:31:25

Web性能优化浏览器缓存API封装

2019-01-03 13:09:58

浏览器缓存原理

2017-04-26 14:15:35

浏览器缓存机制

2017-05-15 13:40:20

浏览器http缓存机制

2018-08-07 10:44:50

缓存技术浏览器

2021-08-02 13:05:49

浏览器HTTP前端

2011-05-06 09:36:16

动态页面

2020-07-16 08:04:21

浏览器缓存策略

2021-06-01 09:12:47

前端浏览器缓存

2021-07-22 09:55:28

浏览器前端缓存

2019-08-16 10:54:03

本地存储javascripthttp缓存

2018-11-30 09:00:19

html5cssjavascript

2020-12-29 09:56:29

浏览器缓存HTTP

2017-09-28 12:03:40

前端

2016-01-05 12:54:52

浏览器浏览器端缓存

2010-04-05 21:57:14

Netscape浏览器

2020-03-11 20:42:34

浏览器缓存机制

2020-01-29 09:42:48

Chrome浏览器UC浏览器浏览器

2017-05-19 08:05:08

浏览器缓存HTTP

2012-03-20 11:07:08

点赞
收藏

51CTO技术栈公众号