浏览器存储

简介: WebApp 优异的性能表现,要归功于浏览器存储技术的广泛应用——这其中除了我们上节提到的缓存,本地存储技术也功不可没。

Cookie

Cookie 的本职工作并非本地存储,而是“维持状态”。HTTP 协议是一个无状态协议,服务器接收客户端的请求,返回一个响应,故事到此就结束了,服务器并没有记录下关于客户端的任何信息。在这样的背景下,Cookie 应运而生。Cookie 说白了就是一个存储在浏览器里的一个小小的文本文件,它附着在 HTTP 请求上,在浏览器和服务器之间“飞来飞去”。它可以携带用户信息,当服务器检查 Cookie 的时候,便可以获取到客户端的状态。

  • Cookied的缺点

    • Cookie 不够大:Cookie 是有体积上限的,它最大只能有 4KB。当 Cookie 超过 4KB 时,它将面临被 裁切的命运。
    • 性能浪费:Cookie 是紧跟域名的,同一个域名下的所有请求,都会携带 Cookie,随着前端应用复杂度的提高,Cookie 也渐渐演化为了一个“存储多面手”——它不仅仅被用于维持状态,还被塞入了一些乱七八糟的其它信息,被迫承担起了本地存储的“重任”。在没有更好的本地存储解决方案的年代里,Cookie 小小的身体里承载了 4KB 内存所不能承受的压力

Web Storage

Web Storage 是 HTML5 专门为浏览器存储而提供的数据存储机制。它又分为 Local Storage 与 Session Storage。Web Storage 存储容量大,根据浏览器的不同,存储容量可以达到 5-10M 之间。

  • Local Storage
    Local Storage 是持久化的本地存储,存储在其中的数据是永远不会过期的,使其消失的唯一办法是手动删除
  • Session Storage
    Session Storage 是临时性的本地存储,它是会话级别的存储,当会话结束(页面被关闭)时,存储内容也随之被释放。
  • 作用域
    Local Storage、Session Storage 和 Cookie 都遵循同源策略。但 Session Storage 特别的一点在于,即便是相同域名下的两个页面,只要它们不在同一个浏览器窗口中打开,那么它们的 Session Storage 内容便无法共享

IndexDB

IndexDB 是一个运行在浏览器上的非关系型数据库。既然是数据库了,那就不是 5M、10M 这样小打小闹级别了。理论上来说,IndexDB 是没有存储上限的(一般来说不会小于 250M)。它不仅可以存储字符串,还可以存储二进制数据。

目录
相关文章
|
4月前
|
存储 前端开发 安全
JavaScript进阶 - 浏览器存储:localStorage, sessionStorage, cookies
【7月更文挑战第2天】探索Web存储:localStorage持久化,sessionStorage会话限定,cookies则伴随HTTP请求。了解它们的特性和限制,如localStorage的5MB容量限制、跨域问题,sessionStorage的生命周期,及cookies的安全与带宽消耗。使用时需权衡安全、效率与应用场景。示例代码展示存储与检索方法。
242 2
|
6月前
|
存储 JavaScript 前端开发
在浏览器中存储数组和对象(js的问题)
在浏览器中存储数组和对象(js的问题)
65 0
|
存储 缓存 算法
如何获取浏览器定位信息存储到浏览器缓存中?
如何获取浏览器定位信息存储到浏览器缓存中
95 0
|
存储 JSON JavaScript
可能不是史上最全但肯定能学会的浏览器存储教程
可能不是史上最全但肯定能学会的浏览器存储教程
118 0
|
存储 缓存 JavaScript
Vue(Vue2+Vue3)——38.浏览器存储(webStorage)
Vue(Vue2+Vue3)——38.浏览器存储(webStorage)
|
存储 负载均衡 前端开发
关于浏览器存储与登录鉴权我所知道的。
关于浏览器存储与登录鉴权我所知道的。
212 0
|
存储 自然语言处理 JavaScript
浏览器原理 11 # 栈空间和堆空间:数据是如何存储的?
浏览器原理 11 # 栈空间和堆空间:数据是如何存储的?
123 0
浏览器原理 11 # 栈空间和堆空间:数据是如何存储的?
|
存储 Web App开发 SQL
浏览器之客户端存储
1. cookie 2. Web Storage a. sessionStorage b. localStorage 3. IndexDB
146 0
|
存储 SQL 前端开发
js: 前端浏览器存储方案整理及其扩展库
js: 前端浏览器存储方案整理及其扩展库
164 0
|
存储 移动开发 缓存