H5缓存

1.‘古老的前端缓存方法’cookie

cookie是我们所熟知的,也作cookies。cookie是存储在用户本地终端上的数据。某些网站为了点别用户身份,进行session跟踪而存储在本地终端上的数据。cookie存储通常是进过加密处理的,它可以存放大概4k左右的内容;我们可以设置cookie的有效期,有效期内缓存一直存在,默认的缓存的时间是浏览器关闭即销毁。而且我们“可爱的小甜点”缓存在每次的http请求和响应中都会被添加到请求头,所以会造成一定的流量损失。

应用:判断用户是否登录,针对登录过的用户,服务端会在他登录时插入一段加密过的唯一辨识单一用户的辨识码,下次只要读取这个值就可以判断当前用户是否登录过。

示例:


2.webStorage

webStorage分为localStorage和sessionStorage。

localStorage是没有时间限制的数据存储。把数据通过localStorage存在本地,如果不手动清除的话,存的数据会一直在这个地方存着,直到“天荒地老,海枯石烂.....”localStaorage一般用于管理购物车、存储H5游戏的一些数据。

sessionStorage是会话存储,针对当前会话所做的一个存储。它的生命周期相对较短,当浏览器关闭的时候,它的生命就终结了。当我们遇到一些内容特别多的表单为了优化用户体验,我们可能要把表单页面拆分成多个子页面,然后按步骤引导用户填写,这个时候我们一般会使用sessionStorage。

相对于cookie,webStorage的存储空间要大的多,可以存储大约5MB左右的内容,而且该存储不会与服务端发生通讯。

示例:


cookie与webStorage对比图


注意:不是什么数据都适合放在 Cookie、localStorage 和 sessionStorage 中的。使用它们的时候,需要时刻注意是否有代码存在 XSS 注入的风险。因为只要打开控制台,你就随意修改它们的值,也就是说如果你的网站中有 XSS 的风险,它们就能对你的 localStorage 肆意妄为。所以千万不要用它们存储你系统中的敏感数据。

前边介绍的方法主要用于存一些简单的键值数据,如果我们需要处理大量结构化数据的存储的时候该怎么办?h5为我们提供了一些其他方法,web SQL、IndexedDB

3.web SQL DataBase

webSQL :使用 SQL 来操纵客户端数据库的 API,这些 API 是异步的,规范中使用的方言是SQLlite。

Web SQL Database 规范中定义的三个核心方法

openDatabase:这个方法使用现有数据库或新建数据库来创建数据库对象

transaction:这个方法允许我们根据情况控制事务提交或回滚

executeSql:这个方法用于执行SQL 查询

但是在W3C官网上已经声明该规范已经停止了,也就是说这是一个废弃的标准。。。。

示例:


4. IndexedDB

IndexedDB 是一种可以让你在用户的浏览器内持久化存储数据的方法,是 WebSQL 数据库的取代品。MDN上完整的API文档可供学习。IndexedDB存储是按索引进行存取删除的,所以如果要从缓存中查找数据只能是根据索引来查找,而没办法根据内容进行全局搜索。

IndexedDB有一定的局限性,以下情况不适合使用IndexedDB

a. 全球多种语言混合存储。国际化支持不好。需要自己处理。

b. 和服务器端数据库同步。你得自己写同步代码。

c. 全文搜索。


注意,在以下情况下,数据库可能被清除:

a. 用户请求清除数据。

b. 浏览器处于隐私模式。最后退出浏览器的时候,数据会被清除。

c. 硬盘等存储设备的容量到限。

d. 不正确的

e. 不完整的改变.


示例:参考文章http://www.tfan.org/using-indexeddb/



上边所述的存储都是做一些本地存储,有时候我们还会开发一些网页应用,对 HTTP响应做缓存的。这时候application Cache、Cache storage就是比较专业的缓存技术。我们前边的所做的本地存储只是把数据存储在本地,如果服务端数据有变化的话,我们需要手动写函数去检测更新。而application Cache、Cache storage做了缓存后,每次加载页面,会自动问询服务端是否有更新,如有就会自动更新数据。

5.application Cache

application cache是应用缓存机制,他使我们的应用可以离线缓存。

使用应用缓存可以得到以下益处:

a. 离线浏览: 用户可以在离线状态下浏览网站内容。

b. 更快的速度: 因为数据被存储在本地,所以速度会更快。

c. 减轻服务器的负载: 浏览器只会下载在服务器上发生改变的资源。

但是因为这个问题比较多,因为采用mainfest,所以你将不能清空缓存,只能进行更新,如果更新到错误的版本,而又没办法调到正确的页面的话,就悲剧了。。。现在官网已经发文已废弃,该特性已经从web标准中删除了。

6.cache storage

CacheStorage是在ServiceWorker的规范中定义的,它用来存储 Response 对象的。也就是说用来对 HTTP响应做缓存的。对于Service Worker,它的运行不走JavaScript线程,在浏览器背后默默运行,脱离浏览器窗体,因此,window以及DOM都是不能访问的;专为异步API设计,同步API是不能在Service Worker里使用;Service Worker要求必须是https协议的,但本地开发也弄个https协议是很麻烦的,好在还算人性化,Service Worker在http://localhost或者http://127.0.0.1这种本地环境下的时候也是可以跑起来的。

示例:参考https://mdn.github.io/sw-test/

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

推荐阅读更多精彩内容