xb18
xb18
文章39
标签0
分类0
前端存储

前端存储

storage

sessionStorage (会话存储) 和 localStorage(本地存储)

  • localStorage 用于长久保存整个网站的数据,保存的数据没有过期时间,直到手动去除。
  • sessionStorage 用于临时保存同一窗口(或标签页)的数据,在关闭窗口或标签页之后将会删除这些数据。

localStorage 的优势

  • 1、localStorage 拓展了 cookie 的 4K 限制。
  • 2、localStorage 会可以将第一次请求的数据直接存储到本地,这个相当于一个 5M 大小的针对于前端页面的数据库,相比于 cookie 可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的。

localStorage 的局限

  • 1、浏览器的大小不统一,并且在 IE8 以上的 IE 版本才支持 localStorage 这个属性。
  • 2、目前所有的浏览器中都会把localStorage的值类型限定为string类型,这个在对我们日常比较常见的JSON对象类型需要一些转换。
  • 3、localStorage在浏览器的隐私模式下面是不可读取的。
  • 4、localStorage本质上是对字符串的读取,如果存储内容多的话会消耗内存空间,会导致页面变卡
  • 5、localStorage不能被爬虫抓取到。

localStorage 与 sessionStorage 的唯一一点区别就是 localStorage 属于永久性存储,而 sessionStorage 属于当会话结束的时候,sessionStorage 中的键值对会被清空。

1
2
3
4
5
6
localStorage.setItem("name", "xb");
localStorage.getItem("name");
localStorage.removeItem("name");
localStorage.clear();
localStorage.key(n);
localStorage.length;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
const cookie = {
get(cname) {
let name = cname + "=";
let ca = document.cookie.split(';');
for (let i = 0; i < ca.length; i++) {
let c = ca[i].trim();
if (c.indexOf(name) == 0) return c.substring(name.length, c.length);
}
},
set(cname, cvalue, exdays) {
let cookieStr = cname + "=" + cvalue + "; ";
if (exdays) {
let d = new Date();
d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
let expires = "expires=" + d.toUTCString();
cookieStr += expires;
}
document.cookie = cookieStr;
},
remove(cname) {
this.set(cname, '', -1);
}
};

IndexedDB

WebSQL

localForage

localForage improves the offline experience of your web app by using asynchronous storage (IndexedDB or WebSQL) with a simple, localStorage-like API.

https://github.com/localForage/localForage

本文作者:xb18
本文链接:http://xb18.github.io/2023/10/24/%E5%89%8D%E7%AB%AF%E5%AD%98%E5%82%A8/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可