Html5应用程序缓存(Cache manifest)


Posted in HTML / CSS onJune 04, 2018

一、作用

离线浏览 - 根据文件规则把资源缓存在本地,脱机依然能够访问资源,联网会直接使用缓存在本地的文件。优化加载速度,节约服务器资源。

二、适用场景

正如 manifest 英译的名字:离线应用程序缓存,这项功能是设计给会有离线场景的应用来使用,例如:需要离线使用的手机APP/H5,亦或是PC端的纯静态页面。

三、问题

1.服务器资源更新后显示滞后需要多刷新一次页面

  1. 首次在载入页面时,浏览器会判断是否引入了 manifest,若检测到引入,则下载并按文件规则缓存资源。
  2. 再次载入页面时,便会根据 manifest 中规定的缓存文件使用本地缓存而不是请求服务器资源。
  3. 当 manifest 文件更新时,页面加载已经进行,但是缓存更新尚未完成,便会先使用旧 manifest 所缓存的文件,同时浏览器会将新的 manifest 文件里的缓存文件下载下来,若想看到最新的静态资源需要刷新下页面重新加载一次。

2.全量加载

当 manifest 文件更新时,所有的资源都要全部被下载一次,并且其中一个出现异常会导致整个 manifest 运行异常。

3.W3C标准及浏览器支持

作为 H5 的新属性,初衷是用来构造离线应用的,缓存网站资源的话原本浏览器的缓存机制(304)已经很好了,没必要再使用 manifest 做缓存;实际上因为使用反响并不好,W3C正在废弃 manifest。

四、使用方法

首先在标签 <html> 中指定 manifest 配置文件。

<html manifest="manifest.appcache">

配置文件 manifest.appcache。

CACHE MANIFEST
# 井号备注,这边可以放版本更新时间,修改备注算更新 manifest 文件
CACHE:
# 首次下载 CACHE 后列出来的文件后缓存到本地。
/favicon.ico
/main.css

NETWORK:
# NETWORK 下的文件不可被缓存,必须要与服务器连接。
login.php

FALLBACK:
# 一行放两个路径,第一个是访问资源,第二个是替补;当无法访问前一个资源时,用后一个资源代替之。
/cat/ /404.html

注意

manifest 会把当前页面缓存下来,所以若想更新当前页,只能先更新 manifest 文件。

五、总结

manifest 适用于需要离线运行的应用(定时器,计算器,阅读器等工具);而需要经常发布频繁更新的网站,这种离线缓存机制并不适合。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
基于css3仿造window7的开始菜单
Jun 17 HTML / CSS
CSS3属性background-size使用指南
Dec 09 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
Jun 22 HTML / CSS
css3实现可拖动的魔方3d效果
May 07 HTML / CSS
html5仿支付宝密码框的实现代码
Sep 06 HTML / CSS
简单聊聊H5的pushState与replaceState的用法
Apr 03 HTML / CSS
HTML5梦幻之旅——炫丽的流星雨效果实现过程
Aug 06 HTML / CSS
用HTML5中的Canvas结合公式绘制粒子运动的教程
May 08 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
Dec 15 HTML / CSS
如何避免常见的6种HTML5错误用法
Nov 06 HTML / CSS
CSS3 天气图标动画效果
Apr 06 HTML / CSS
CSS3实现列表无限滚动/轮播效果
Jun 23 HTML / CSS
Html5之title吸顶功能
Jun 04 #HTML / CSS
浅谈Html5移动端ios/Android兼容性总结
Jun 01 #HTML / CSS
HTML5中的websocket实现直播功能
May 21 #HTML / CSS
深入浅析HTML5中的article和section的区别
May 15 #HTML / CSS
HTML5触摸事件实现移动端简易进度条的实现方法
May 04 #HTML / CSS
HTML5声音录制/播放功能的实现代码
May 03 #HTML / CSS
HTML5离线应用与客户端存储的实现
May 03 #HTML / CSS
You might like
8个必备的PHP功能实例代码
2013/10/27 PHP
php使用explode()函数将字符串拆分成数组的方法
2015/02/17 PHP
php json相关函数用法示例
2017/03/28 PHP
JS定时器实例
2013/04/17 Javascript
js定时器(执行一次、重复执行)
2014/03/07 Javascript
常见的原始JS选择器使用方法总结
2014/04/09 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
Python实现类似jQuery使用中的链式调用的示例
2016/06/16 Python
Python实现感知机(PLA)算法
2017/12/20 Python
5个很好的Python面试题问题答案及分析
2018/01/19 Python
python实现可视化动态CPU性能监控
2018/06/21 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
对pycharm 修改程序运行所需内存详解
2018/12/03 Python
python flask解析json数据不完整的解决方法
2019/05/26 Python
mac系统下Redis安装和使用步骤详解
2019/07/09 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
Python JSON编解码方式原理详解
2020/01/20 Python
Numpy数组的广播机制的实现
2020/11/03 Python
vue+django实现下载文件的示例
2021/03/24 Vue.js
大学生军训自我评价分享
2013/11/09 职场文书
护理不良事件检讨书
2014/02/06 职场文书
社区党员志愿服务活动方案
2014/08/18 职场文书
医院我们的节日活动实施方案
2014/08/22 职场文书
课外小组活动总结
2014/08/27 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
办公室个人总结
2015/02/28 职场文书
社区党建工作总结2015
2015/05/13 职场文书
十二生肖观后感
2015/06/12 职场文书
2016年小学生新年寄语
2015/08/18 职场文书
2016继续教育研修日志
2015/11/13 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
Go gRPC进阶教程gRPC转换HTTP
2022/06/16 Golang