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 制作旋转的大风车(充满童年回忆)
Jan 30 HTML / CSS
一款css实现的鼠标经过按钮的特效
Sep 11 HTML / CSS
纯css3制作网站后台管理面板
Dec 30 HTML / CSS
基于CSS3实现立方体自转效果
Mar 01 HTML / CSS
css3给背景图片加颜色遮罩的方法
Nov 05 HTML / CSS
CSS3制作圆形滚动进度条动画的示例
Nov 05 HTML / CSS
HTML5 用动画的表现形式装载图像
Mar 08 HTML / CSS
H5仿微信界面教程(一)
Jul 05 HTML / CSS
canvas绘制文本内容自动换行的实现代码
Jan 14 HTML / CSS
基于HTML5 Canvas:字符串,路径,背景,图片的详解
May 09 HTML / CSS
HTML5实现桌面通知 提示功能
Oct 11 HTML / CSS
CSS 一行代码实现头像与国旗的融合
Oct 24 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 $_SERVER详解
2009/01/16 PHP
php模仿asp Application对象在线人数统计实现方法
2015/01/04 PHP
phplot生成图片类用法详解
2015/01/06 PHP
Laravel框架实现定时发布任务的方法
2018/08/16 PHP
使用JavaScript switch case 另类写法
2010/03/14 Javascript
jquery对表单操作2
2011/04/06 Javascript
getAsDataURL在Firefox7.0下无法预览本地图片的解决方法
2013/11/15 Javascript
深入理解JQuery keyUp和keyDown的区别
2013/12/12 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
node.js中的fs.rmdir方法使用说明
2014/12/16 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
JavaScript 中使用 Generator的方法
2017/12/29 Javascript
webpack组织模块打包Library的原理及实现
2018/03/10 Javascript
js实现小球在页面规定的区域运动
2020/06/16 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
Python重新引入被覆盖的自带function
2014/07/16 Python
Python中__call__用法实例
2014/08/29 Python
Python中的两个内置模块介绍
2015/04/05 Python
详解PyCharm+QTDesigner+PyUIC使用教程
2019/06/13 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
使用pip安装python库的多种方式
2019/07/31 Python
详解Django admin高级用法
2019/11/06 Python
python文字转语音实现过程解析
2019/11/12 Python
解决pycharm同一目录下无法import其他文件
2020/02/12 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
Windows下Sqlmap环境安装教程详解
2020/08/04 Python
Python+logging输出到屏幕将log日志写入文件
2020/11/11 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
英国在线滑雪板和冲浪商店:The Board Basement
2020/01/11 全球购物
八皇后问题,输出了所有情况,不过有些结果只是旋转了90度
2016/08/15 面试题
会计师职业生涯规划范文
2014/02/18 职场文书
医院竞聘演讲稿
2014/05/16 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
初中学生操行评语
2014/12/26 职场文书
Apache Hudi的多版本清理服务彻底讲解
2022/03/31 Servers