浏览器存储方案

更多个人博客:(https://github.com/zenglinan/blog)

如果对你有帮助,欢迎star。

我们都知道 HTTP 是无状态协议, 在远古时代, 没有什么数据存储的方案, 无法跟踪用户的会话操作, 连一个购物车都实现不了。

直到后来, 一系列数据存储方案出现了

Cookie

Cookie 是最开始用来做数据存储的.

服务端在响应头设置 Cookie, 浏览器端接收到 Cookie 存储在硬盘中, 下次请求同域名的站点时就会带上 Cookie.

在浏览器端, 也可以去读写 Cookie, 除非服务端设置了 HTTP-only, 这个 Cookie 就不可写入了, 这也避免了一些恶意攻击.

但是用 Cookie 负责所有的数据存储有以下几个问题:

  1. Cookie 的存储容量有限, 只有 4K.
  2. 每次请求都带上 Cookie, 会浪费带宽, 也影响请求速度.
  3. 同域名的所有站点发起请求的时候都会带上 Cookie, 这会导致: 有可能只是请求一些静态资源, 根本用不着 Cookie, 但是因为和主站点同域却还是发送了.

这也就解释了, 为什么主站域名和静态资源域名不要一样, 否则静态资源的请求也会携带 Cookie, 造成不必要的流量浪费。

localStorage

localStorage 是专门用作浏览器端的存储, 提供了简单明了的 API, 存储容量大.

localStorage 通过键值对形式存储数据, 只能存储字符串, 但是只要是能 JSON 序列化的数据都可以存储, 比如数组, 图片, js文件, 样式等

localStorage 的存储失效是永久的, 除非用代码删除或者用户手动删除

要注意, 这种存储方式是明文存储, 可以直接访问, 不可以用来存重要信息

sessionStorage

sessionStorage 是浏览器的另一大存储机制, 与 localSorage一样的是: 他也有十分大的存储容量.

不同之处在于, sessionStorage 在用户关闭 tab 标签页之后就会失效了, 一般可以存储一些表单数据, 当用户跳转之后再返回, 保证表单数据还在.

不同浏览器无法共享localStorage和sessionStorage中的信息。同一浏览器的相同域名和端口的不同页面间可以共享相同的 localStorage,但是不同页面间无法共享sessionStorage的信息

indexedDB

indexedDB 相当于浏览器提供的本地数据库, 可以储存大量数据, 可以存储字符串, 二进制数据

indexedDB 用键值对形式存储, 键必须是唯一的

indexedDB 为了避免读写大量数据时锁死浏览器, 采取了异步操作, localStorage 则为同步

支持事务。意思就是一系列操作步骤之中,只要有一步失败,整个事务就都取消,数据库回滚到事务发生之前的状态,不存在只改写一部分数据的情况。

indexedDB 有同源限制, 网页只能访问同域下的数据库

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  •   支持离线 Web 应用开发是 HTML5 的另一个重点。   所谓离线 Web 应用,就是在设备不能上网的情况...
    霜天晓阅读 1,040评论 0 2
  • 前言: 五一假期在撸代码的时候用到cookie,感觉对浏览器的数据存储方案不是很了解,因此又去翻了两本大头书中间的...
    Srtian阅读 5,201评论 6 86
  • javascript有七种内置类型: 空值(null) 未定义(undefined) 布尔值(boolean) 数...
    斯里兰卡的小狮子阅读 286评论 0 0
  • 我听闻云间风故 所谓行乡陌路 清臻至飞雪漫舞 策马还乡蹄踏 踏下春光落幕 至冬雪披纱,夏水挂碧 春雷彻响,秋池凝霜...
    鱼奉阅读 420评论 0 4
  • 今天学习关于房屋画的不同形状的情况,主要有以下几个问题:一这个房屋是谁的;二这个房屋让你感觉怎么样;三这个房子里你...
    DAN524阅读 175评论 0 0