likes
comments
collection
share

一文搞懂前端存储

作者站长头像
站长
· 阅读数 48

什么是前端存储

开门见山。前端存储就是通过前端技术来存储一段信息,然后在同源下的不同页面中都可以获取到已存储信息的一种策略。

前端存储的作用

  • 方便网页的加载,避免了在发送请求收到响应前页面的空白期
  • 可以在非强制性要求实时更新时减少向服务端的请求,加快渲染速度
  • 在网络不佳或无网时仍有离线数据可以查看

有哪些前端存储方案

一文搞懂前端存储

如图,一共有5种前端存储方案。大致可以分为3类:

  • Cookie
  • WebStorage:LocalStorage、SessionStorage
  • 数据库存储:IndexedDB、WebSQL

先做一个简单对比:

一文搞懂前端存储

下面我们详细介绍。

Cookie

Cookie 的工作流程:

一文搞懂前端存储

Cookie 的构成:

一文搞懂前端存储

一文搞懂前端存储

域、路径、失效时间和安全性都是服务器给浏览器的指示,它们不会随着请求发送给服务器,发送给服务器的只有名称与值的键值对

Cookie 的生命周期:

  • 如果设定了 Cookie 的过期时间,那么 Cookie 会在到期时自动失效
  • 如果没有设定过期时间,那么 Cookie 就是 session 级别的,即浏览器关闭时 Cookie 自动消失

Cookie 的优缺点:

优点:

  • 可以控制过期时间,不会永久有效,有一定的安全保障
  • 可进行扩展,可跨域共享
  • 通过加密与安全传输技术,可以减少 Cookie 被破解的可能性
  • 有较高的兼容性

缺点:

  • 存储大小最多4KB
  • 存储数量根据浏览器或浏览器版本的不同而不同,并且每个域最多20条
  • 请求头上的数据容易被拦截攻击
  • 存储的数据只能是字符串类型

操作 Cookie:

// 设置 Cookie
// Cookie 值必须是字符串类型,并且不支持分号、逗号以及空格,
// 所以有时需要先使用 encodeURIComponent() 进行编码,或者使用 JSON.stringify() 进行序列化
document.cookie = '键1=值1;键2=值2;键n=值n';

// 读取 Cookie
// 有时需要使用 decodeURIComponent() 或者 JSON.parse()
document.cookie

// 修改 Cookie
// 如果键不存在,就新增;否则就修改
document.cookie = '已经存储过的键=新值';

// 删除 Cookie
document.cookie = '要删除的键=任意值;max-age=0';

WebStorage

WebStorage 是 HTML5 新加的,WebStorage(Web 存储) 分为 LocalStorage(本地存储) 和 SessionStorage(会话存储)。

WebStorage 的优势:

  • 解决了 Cookie 的一些限制,同时存储一些需要严格控制在客户端且不需要发送给服务器的数据
  • 提供了除 Cookie 之外的另一种存储会话的途径
  • 提供了一种大容量存储空间来跨会话存储数据的途径

比较一下 LocalStorage 和 SessionStorage 的区别:

一文搞懂前端存储

WebStorage 跟 Cookie 相比:

一文搞懂前端存储

IndexedDB

IndexedDB 是浏览器提供的本地数据库,是 HTML5 新加的,允许存储大量数据,提供查找接口,还能建立索引。这些都是 WebStorage 不具备的。就数据库而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),接近于 NoSQL 数据库,以键值对的形式进行存储,可以快速进行读取操作,非常适合 Web 场景,同时使用 JS 进行操作会很方便。

WebSQL

WebSQL 是在浏览器端运行的轻量级数据库,WebSQL 类似于 SQLite,更像是关系型数据库,使用 SQL 查询数据。注意,这种本地数据存储方案已经被废弃。

最后

如果文中有错误或者不足之处,欢迎大家在评论区指正。

你的点赞是对我莫大的鼓励!感谢阅读~

转载自:https://juejin.cn/post/7137185592424529934
评论
请登录