Web前端基础篇-HTML5-06-离线缓存AppCache

照常上图,欢迎来到老夫课堂

tmpdir__17_9_7_15_04_07.jpg

温馨提示:文章结构如下,阅读完可能需要花费3分钟

一、 AppCache缓存基础知识以及实现原理
二、 AppCache缓存使用步骤
三、 AppCache缓存优缺点以及使用场景

进入正文

一、 AppCache缓存基础知识以及实现原理

什么是AppCache ?
AppCache是应用缓存,可以这用这个功能实现用户离线访问应用,妈妈再也不用担心没有网啦。

核心基础知识有2点:

1.掌握manifest文件配置,使用html的属性加载文件
mainfest文件说明,分为五个部分

  • A.CACHE MANIFEST - 固定格式,必须写在前面
  • B.VERSION: 1.0.0 版本号 决定缓存是否需要更新
  • C.CACHE: 缓存的文件的绝对路径或者相对路径,绝对路径必须是同源
  • D.NETWORK: 需要即时从服务器请求的文件通常是会使用通配符 *, * 代表除CACHE以外的文件都进行在线请求
  • E.FALLBACK: 缓存请求失败时需要跳转的页面, 一般是失败404页面

2.掌握js的 applicationCache ,以及常用API

  • status 缓存的状态
  • update() 发起应用缓存下载进程,发起缓存请求
  • abort() 取消正在进行的缓存下载
  • swapcache() 切换成本地最新的缓存环境
  • updateready() 可以监听manifest中列举的文件下载状态等其他API,如果需要了解更多请自行到js里面查看

AppCache的实现原理

1.浏览器访问APPCache缓存是否有资源,有资源直接就返回渲染页面;

  1. 检查服务器manifest版本是否有更新,如果没有更新就结束;
  2. 如果manifest版本有更新,就会把manifest指定的文件从服务器全部拉取,并更新到APPCache

4.浏览器第二次访问APPCache缓存直接返回资源渲染

image.png
二、 AppCache缓存使用步骤
  1. 创建缓存清单,新增manifest.appcache文本文件,后缀名可以自定义,建议使用.appcache

    CACHE MANIFEST
    # VERSION 1.0.0
    
    CACHE:
    ./index.html
    
    NETWORK:
    *
    
    FALLBACK:
    ./error.html
    
  2. <html>标签引用manifest.appcache文件

      <html manifest="manifest.appcache"></html>
    

3.js 监听缓存刷新

 window.applicationCache.addEventListener('updateready', function (e) {
 // 缓存的状态
  if(window.applicationCache.status === window.applicationCache.UPDATEREADY){
   //切换成本地最新的缓存环境事件
   window.applicationCache.swapCache();
   // 刷新页面
   window.location.reload();
  }
},false);

注意事项:

  • 请求的mime-type 必须是 text/cache-manifest
  • 必须以“CACHE MANIFEST”固定行开始。
  • (#)后面表示注释,和我们常用的注释方式一样

请求缓存之后有可能会用到更新缓存,更新缓存方式如下:

  • 更新manifest文件 - 文件版本号
  • 通过javascript操作-window.applicationCache.update()
  • 清除浏览器缓存-用户手动清除浏览器缓存
三、 AppCache缓存优缺点以及使用场景

AppCache的兼容性:兼容IE9, 老夫重点关注万恶的IE版本,其他都基本兼容

优点:
  • 1.完全离线,没有网络也可以使用
  • 2.资源被缓存,加载更快
  • 3.降低网络请求频率,降低serve负载
缺点:
  • 1.含有manifest属性的页面都会被缓存
  • 2.更新是建立在manifest文件的更新,文件更新之后才能更新相对应的页面,必须2次刷新
  • 3.更新是全局的,是检测版本号全局更新,不能单点更新
  • 4.对链接的参数敏感,index.html 与 index.html?type =1 被认为是不同的页面,不同的缓存
使用场景:
  • 1.单地址页面
  • 2.对实时请求数据不高的业务
  • 3.离线webApp

H5系列
Web前端基础篇-HTML-01-BOM浏览器对象模型
Web前端基础篇-HTML-02-HTML的生命周期
Web前端基础篇-HTML-03-事件处理系统
Web前端基础篇-HTML-04-HTML 渲染流程
Web前端基础篇-HTML5-05-最全本地存储总结
Web前端基础篇-HTML5-06-离线缓存AppCache
Web前端基础篇-HTML5-07-浏览器缓存机制

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