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 相关文章推荐
45个非常奇妙的CSS3 特性应用示例
Jan 01 HTML / CSS
css3进行截取替代js的substring
Sep 02 HTML / CSS
一款纯css3实现的非常实用的鼠标悬停特效演示
Nov 05 HTML / CSS
CSS+jQuery实现的在线答题功能
Apr 25 HTML / CSS
用React加CSS3实现微信拆红包动画效果
Mar 13 HTML / CSS
HTML5边玩边学(3)像素和颜色
Sep 21 HTML / CSS
html5时钟实现代码
Oct 22 HTML / CSS
将HTML5 Canvas的内容保存为图片借助toDataURL实现
May 20 HTML / CSS
一些常用的HTML5模式(pattern) 总结
Jul 14 HTML / CSS
解决HTML5中滚动到底部的事件问题
Aug 22 HTML / CSS
html2 canvas生成清晰的图片实现打印功能
Sep 23 HTML / CSS
详解HTML5常用的语义化标签
Sep 27 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
vBulletin HACK----关于排版的两个HACK
2006/10/09 PHP
apache+php完美解决301重定向的两种方法
2011/06/08 PHP
windows服务器中检测PHP SSL是否开启以及开启SSL的方法
2014/04/25 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
PHP实现的简单在线计算器功能示例
2017/08/02 PHP
php实现socket推送技术的示例
2017/12/20 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
javascript unicode与GBK2312(中文)编码转换方法
2013/11/14 Javascript
浅谈JavaScript中setInterval和setTimeout的使用问题
2015/08/01 Javascript
js实现的页面矩阵图形变换特效
2016/01/26 Javascript
浅谈Web页面向后台提交数据的方式和选择
2016/09/23 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
Angular2 父子组件通信方式的示例
2018/01/29 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
微信小程序下拉加载和上拉刷新两种实现方法详解
2019/09/05 Javascript
node使用request请求的方法
2019/12/20 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
2020/10/09 jQuery
[02:12]2015国际邀请赛 SHOWOPEN
2015/08/05 DOTA
python生成excel的实例代码
2017/11/08 Python
Python实现两款计算器功能示例
2017/12/19 Python
python正则表达式去除两个特殊字符间的内容方法
2018/12/24 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
查看keras各种网络结构各层的名字方式
2020/06/11 Python
python 实现图片裁剪小工具
2021/02/02 Python
canvas烟花特效锦集
2018/01/17 HTML / CSS
香港迪士尼乐园酒店预订:Hong Kong Disneyland Hotels
2017/05/02 全球购物
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
什么是触发器(trigger)? 触发器有什么作用?
2013/09/18 面试题
三月雷锋月活动总结
2014/07/03 职场文书
乡镇领导班子四风整顿行动工作汇报
2014/10/25 职场文书
大一学生个人总结
2015/02/15 职场文书
golang如何去除多余空白字符(含制表符)
2021/04/25 Golang
Django对接elasticsearch实现全文检索的示例代码
2021/08/02 Python
GoFrame基于性能测试得知grpool使用场景
2022/06/21 Golang