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实现字体颜色渐变的实现
Mar 09 HTML / CSS
纯CSS3制作的鼠标悬停时边框旋转
Jan 03 HTML / CSS
CSS3关于z-index不生效问题的解决
Feb 19 HTML / CSS
详解HTML5中的标签
Jun 19 HTML / CSS
HTML5使用DOM进行自定义控制示例代码
Jun 08 HTML / CSS
HTML5中drawImage用法分析
Dec 01 HTML / CSS
很酷的HTML5电子书翻页动画特效
Feb 25 HTML / CSS
详解HTML5中的picture元素响应式处理图片
Jan 03 HTML / CSS
h5页面唤起app如果没安装就跳转下载(iOS和Android)
Jun 03 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
HTML页面点击按钮关闭页面的多种方式
Dec 24 HTML / CSS
VW、VH适配移动端的解决方案与常见问题
May 21 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
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
PHP得到mssql的存储过程的输出参数功能实现
2012/11/23 PHP
实用的简单PHP分页集合包括使用方法
2013/10/21 PHP
PHP引用返回用法示例
2016/05/28 PHP
jQuery 白痴级入门教程
2009/11/11 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
js获取url参数代码实例分享(JS操作URL)
2013/12/13 Javascript
js调用iframe实现打印页面内容的方法
2014/03/04 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
2014/11/04 Javascript
angularjs的一些优化小技巧
2014/12/06 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
jQuery处理json数据返回数组和输出的方法
2015/03/11 Javascript
javascript数据类型详解
2017/02/07 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
VUE使用vuex解决模块间传值问题的方法
2017/06/01 Javascript
javascript ES6 新增了let命令使用介绍
2017/07/07 Javascript
vue中计算属性(computed)、methods和watched之间的区别
2017/07/27 Javascript
react-native封装插件swiper的使用方法
2018/03/20 Javascript
Electron 调用命令行(cmd)
2019/09/23 Javascript
antd-DatePicker组件获取时间值,及相关设置方式
2020/10/27 Javascript
Python中标准库OS的常用方法总结大全
2017/07/19 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
2020/02/28 Python
Python实现Word表格转成Excel表格的示例代码
2020/04/16 Python
Python的Django框架实现数据库查询(不返回QuerySet的方法)
2020/05/19 Python
Intersport西班牙:在线体育商店
2019/11/06 全球购物
毕业自我鉴定书
2014/03/24 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
2014年乡镇个人工作总结
2014/12/03 职场文书
家属慰问信
2015/02/14 职场文书
餐饮服务食品安全承诺书
2015/04/29 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书
Python Pytorch查询图像的特征从集合或数据库中查找图像
2022/04/09 Python