浏览器存储

浏览器存储包括了 Cookies、Local Storage、Session Storage、IndexedDB、WebSQL 这 5 种形式的本地存储。

Cookies

Cookie 的本职工作并非本地存储,而是“维持状态”。
因为HTTP协议是无状态的,HTTP协议自身不对请求和响应之间的通信状态进行保存。Cookie 是用来绕开HTTP的无状态性的“额外手段”之一。

Cookie的生成方式主要有两种:

  1. 通过响应头里的 Set-Cookie 指定要存储的 Cookie 值
  2. 在 js 中通过 document.cookie 可以读写 Cookie,以键值对的形式展示

Cookie 的特点:

  • Cookie 的大小限制在 4KB 左右,此外很多浏览器对一个站点的 Cookie 个数也是有限制
  • 由于请求会携带 Cookie,故过多的 Cookie 会带来巨大的性能浪费

Cookie 与安全:
在这里插入图片描述
关于Cookie 的 SameSite 属性,可参见阮一峰老师的这篇文章,以及作者在实际项目中遇到的关于SameSite 的问题。

HTML5 中新增了本地存储的解决方案----Web Storage,它分成两类:sessionStorage和localStorage。这样有了WebStorage后,cookie能只做它应该做的事情了——作为客户端与服务器交互的通道,保持客户端状态。

Session Storage、Local Storage

Session Storage 的特点:

  • 会话级别的浏览器存储,当会话结束(通常是该窗口关闭),数据被清空
  • 大小为5M左右
  • 仅在客户端使用,不和服务端进行通信

Local Storage 的特点:

  • 保存的数据长期存在,下一次访问该网站的时候,网页可以直接读取以前保存的数据。
  • 大小为5M左右
  • 仅在客户端使用,不和服务端进行通信

Session Storage、Local Storage 的区别:

  • 【作用域】:Local Storage 只要求同源,就能读取/修改到同一份 Local Storage 数据。Session Storage,除了要求同源外,还要求在同一窗口(也就是浏览器的标签页)
  • 【生命周期】:Local Storage 是持久化的本地存储,存储在其中的数据是永远不会过期的,使其消失的唯一办法是手动删除;而 Session Storage 是临时性的本地存储,它是会话级别的存储,当会话结束(页面被关闭)时,存储内容也随之被释放。

Session Storage、Local Storage 的使用方式类似:

sessionStorage.setItem('key', 'value');
sessionStorage.getItem('key');
sessionStorage.removeItem('key');
sessionStorage.clear();

localStorage.setItem('myCat', 'Tom');
localStorage.getItem('myCat');
localStorage.removeItem('myCat');
localStorage.clear();

IndexedDB

随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。
现有的浏览器数据储存方案,都不适合储存大量数据:Cookie 的大小不超过4KB,且每次请求都会发送回服务器;LocalStorage 在 2.5MB 到 10MB 之间(各家浏览器不同),而且不提供搜索功能,不能建立自定义的索引。所以,需要一种新的解决方案,这就是 IndexedDB 诞生的背景。

IndexedDB 就是浏览器提供的本地数据库,它可以被网页脚本创建和操作。IndexedDB 允许储存大量数据,提供查找接口,还能建立索引。这些都是 LocalStorage 所不具备的。就数据库类型而言,IndexedDB 不属于关系型数据库(不支持 SQL 查询语句),更接近 NoSQL 数据库。
具体使用可参考浏览器数据库 IndexedDB 入门教程MDN

WebSQL

Web SQL是前端的数据库,它也是本地存储的一种,使用 SQLite 实现,SQLite 是一种轻量级数据库,它占的空间小,支持创建表,插入、修改、删除表格数据

W3C 推荐标准中将 WebSQL 废弃

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值