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之背景尺寸Background-size使用介绍
Oct 14 HTML / CSS
用css3写出气球样式的示例代码
Sep 11 HTML / CSS
CSS3 创建网页动画实现弹跳球动效果
Oct 30 HTML / CSS
CSS3 实现飘动的云朵动画
Dec 01 HTML / CSS
HTML5 Canvas 起步(1) - 基本概念
May 12 HTML / CSS
关于HTML5你必须知道的28个新特性,新技巧以及新技术
May 28 HTML / CSS
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
Dec 13 HTML / CSS
基于html5 canvas实现漫天飞雪效果实例
Sep 10 HTML / CSS
html5将图片转换成base64的实例代码
Sep 21 HTML / CSS
详解canvas多边形(蜘蛛图)的画法示例
Jan 29 HTML / CSS
canvas绘制太极图的实现示例
Apr 29 HTML / CSS
HTML页面滚动时部分内容位置固定不滚动的实现
Apr 14 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
打造计数器DIY三步曲(中)
2006/10/09 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
2015/09/22 PHP
php读取XML的常见方法实例总结
2017/04/25 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
jquery多行滚动/向左或向上滚动/响应鼠标实现思路及代码
2013/01/23 Javascript
批量实现面向对象的实例代码
2013/07/01 Javascript
Ext JS 4实现带week(星期)的日期选择控件(实战二)
2013/08/21 Javascript
js中window.open()的所有参数详细解析
2014/01/09 Javascript
javascript中的nextSibling使用陷(da)阱(keng)
2014/05/05 Javascript
基于javascript实现根据身份证号码识别性别和年龄
2016/01/22 Javascript
浅谈jquery的map()和each()方法
2016/06/12 Javascript
[原创]javascript typeof id==='string'?document.getElementById(id):id解释
2016/11/02 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
vue中监听返回键问题
2019/08/28 Javascript
使用layer.msg 时间设置不起作用的解决方法
2019/09/12 Javascript
基于JavaScript实现控制下拉列表
2020/05/08 Javascript
浅析Python多线程下的变量问题
2015/04/28 Python
简单了解Python下用于监视文件系统的pyinotify包
2015/11/13 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
Python二叉树的镜像转换实现方法示例
2019/03/06 Python
python爬虫爬取微博评论案例详解
2019/03/27 Python
使用Python串口实时显示数据并绘图的例子
2019/12/26 Python
网易微博Web App用HTML5开发的过程介绍
2012/06/13 HTML / CSS
HTML5 中新的全局属性(整理)
2013/07/31 HTML / CSS
学校爱国卫生月活动总结
2014/06/25 职场文书
2015年妇委会工作总结
2015/05/22 职场文书
教你用Python+selenium搭建自动化测试环境
2021/06/18 Python
Flask response响应的具体使用
2021/07/15 Python
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android
Python利用Turtle绘制哆啦A梦和小猪佩奇
2022/04/04 Python
Python 文字识别
2022/05/11 Python