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截图_动力节点Java学院整理
Jul 11 HTML / CSS
CSS3 选择器 基本选择器介绍
Jan 21 HTML / CSS
使用HTML和CSS3绘制基本卡通图案的示例分享
Nov 06 HTML / CSS
CSS3 3D旋转rotate效果实例介绍
May 03 HTML / CSS
HTML5中的postMessage API基本使用教程
May 20 HTML / CSS
H5仿微信界面教程(一)
Jul 05 HTML / CSS
使用CSS实现弹性视频html5案例实践
Dec 26 HTML / CSS
HTML5之SVG 2D入门11—用户交互性(动画)介绍及应用
Jan 30 HTML / CSS
用HTML5的canvas实现一个炫酷时钟效果
May 20 HTML / CSS
使用Html5多媒体实现微信语音功能
Jul 26 HTML / CSS
CSS极坐标的实例代码
Jun 03 HTML / CSS
CSS布局之浮动(float)和定位(position)属性的区别
Sep 25 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
Yii框架关联查询with用法分析
2014/12/02 PHP
php判断一个数组是否为有序的方法
2015/03/27 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
非常棒的10款jQuery 幻灯片插件
2011/06/14 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
Nodejs使用mysql模块之获得更新和删除影响的行数的方法
2014/03/18 NodeJs
JQuery中两个ul标签的li互相移动实现方法
2015/05/18 Javascript
学习JavaScript设计模式之代理模式
2016/01/12 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
jQuery中用on绑定事件时需注意的事项
2017/03/19 Javascript
jQuery实现Select下拉列表进行状态选择功能
2017/03/30 jQuery
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
浅谈vue的踩坑路
2017/08/31 Javascript
bootstrap table实现双击可编辑、添加、删除行功能
2017/09/27 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
vue element中axios下载文件(后端Python)
2019/05/10 Javascript
layui-table获得当前行的上/下一行数据的例子
2019/09/24 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
解析Python编程中的包结构
2015/10/25 Python
Python使用urllib2模块抓取HTML页面资源的实例分享
2016/05/03 Python
python中partial()基础用法说明
2018/12/30 Python
在Python中append以及extend返回None的例子
2019/07/20 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
精灵市场:Pixie Market
2019/06/18 全球购物
标准离婚协议书范文下载
2014/11/30 职场文书
2015年度企业工作总结
2015/05/21 职场文书
尊师重教主题班会
2015/08/14 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
Windows10下安装MySQL8
2021/04/06 MySQL
redis配置文件中常用配置详解
2021/04/14 Redis
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang