一、什么是应用程序缓存?

  HTML5 引入了应用程序缓存(Application Cache),这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。

二、优势

  离线浏览 - 用户可在应用离线时使用它们

  速度 - 已缓存资源加载得更快

  减少服务器负载 - 浏览器将只从服务器下载更新过或更改过的资源。

三、原理

  HTML5的离线存储是基于一个新建的.appcache文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像cookie一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

四、如何使用?

  在文档的 标签中包含 manifest 属性。

  在manifest文件编写离线存储的资源。

  在离线状态时,操作window.applicationCache进行需求实现。

1.在文档的<html> 标签中包含 manifest 属性。

demo.html:

<!DOCTYPE html>
<html lang="en" manifest="demo.appcache">
<head>
<meta charset="UTF-8">
<title>demo</title>
</head>
<body>
<img src="img.jpg" height="500" width="900" alt="">
其它内容...
</body>
</html>

2.在manifest文件编写离线存储的资源。

  manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。

manifest 文件可分为三个部分:

  CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存

  NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存,可以使用星号来指示除CACHE MANIFEST外的所有其他资源/文件都需要因特网连接。

  FALLBACK - 在此标题下列出的文件规定当页面无法访问时的替代页面(比如 404 页面)。

 demo.appcache:

CACHE MANIFEST
#version 1.0
CACHE:
img.jpg
NETWORK:
*
FALLBACK:
/demo/ /404.html

代码意为:

  demo.html中的img在首次下载后进行缓存;其他文件内容都需要因特网连接;如果无法建立因特网连接,则用 "404.html" 替代 /demo/ 目录中的所有文件。

注意:

  如果编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会使缓存更新,manifest 文件更改时缓存会更新。以 "#" 开头的是注释行,更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。

  manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置。

在tomcat服务器中的conf/web.xml中添加:

<mime-mapping>
<extension>manifest</extension>
<mime-type>text/cache-manifest</mime-type>
</mime-mapping>

  在开发者工具的Network面板下,可以看到img.jpg的Size为(from disk cache),意味着是从缓存中读取的。

3.在离线状态时,操作window.applicationCache进行需求实现。

五、更新缓存

一旦应用被缓存,它就会保持缓存直到发生下列情况:

  用户清空浏览器缓存

  manifest 文件被修改

  由程序来更新应用缓存

六、注意事项

  浏览器对缓存数据的容量限制可能不太一样(某些浏览器设置的限制是每个站点 5MB)。

  如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程都将失败,浏览器继续全部使用老的缓存。

  引用manifest的html必须与manifest文件同源,在同一个域下。FALLBACK中的资源必须和manifest文件同源。

  当manifest文件发生改变时,会触发更新请求资源。系统会自动缓存引用清单文件的 HTML 文件。

HTML5-应用程序缓存(Application Cache)的更多相关文章

  1. HTML5应用程序缓存Application Cache

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  2. HTML5应用程序缓存Application Cache详解

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  3. HTML5应用程序缓存Application Cache详解.RP

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  4. HTML5应用程序缓存Application Cache.RP

    什么是Application Cache HTML5引入了应用程序缓存技术,意味着web应用可进行缓存,并在没有网络的情况下使用,通过创建cache manifest文件,可以轻松的创建离线应用. A ...

  5. HTML5学习总结-08 应用缓存(Application Cache)

    一 应用缓存(Application Cache) 1 应用缓存 HTML5 引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问. 应用程序缓存为应用带来三个优势: ...

  6. HTML5: HTML5 应用程序缓存

    ylbtech-HTML5: HTML5 应用程序缓存 1.返回顶部 1. HTML5 应用程序缓存 使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线 ...

  7. HTML5应用程序缓存实现离线Web网页或应用

    HTML5应用程序缓存和浏览器缓存的区别.(有些)浏览器会主动保存自己的缓存文件以加快网站加载速度.但是要实现浏览器缓存必须要满足一个前提,那就是网络必须要保持连接.如果网络没有连接,即使浏览器启用了 ...

  8. HTML5 应用程序缓存

    使用HTML5,通过创建 cache manifest 文件,可以轻松创建web应用的离线缓存.   什么事应用程序缓存? HTML5引入了应用程序缓存,这意味着 web 应用可进行缓存,并在没有因特 ...

  9. cookie,sessionStorage,loclaStorage,HTML5应用程序缓存

    cookie Cookie 是一些数据,由服务器生成,发送给浏览器,一旦用户从该网站或服务器退出,Cookie 就存储在用户本地的硬盘上,下一次请求同一网站时会把该cookie发送给服务器.Cooki ...

  10. 【HTML5】浅析HTML5应用程序缓存(ApplicationCache)

    一.为什么需要Web应用程序缓存 在移动互联网时代,设备终端位置不再固定,依赖无线信号,网络的可靠性变得降低,比如坐在火车上,过了一个隧道(15分钟),便无法访问网站,这对于web的伤害是很大的    ...

随机推荐

  1. ExtJS学习之MessageBox

    MessageBox为ExtJS中的消息对话框,包括alert  confirm prompt show四种. 1.index.html <!DOCTYPE html PUBLIC " ...

  2. JS性能优化 之 文档片段 createDocumentFragment

    我们用原生JS进行开发时,经常会用到两种更新DOM节点的方法:innerHTML 和 appendChild() .其中 innerHTML 会完全替换掉原先的节点内容,如果我们是想向元素追加子节点的 ...

  3. Jmeter进阶篇之逻辑控制器

    最近,遇到了一个困扰很多人的问题.情景如下: 业务流程:登录一个网站,反复进行充值. 通常的做法是使用jmeter对登录和充值的接口进行反复的执行: 但是实现的方法却不能完美的贴合业务流程.并且,在进 ...

  4. FI / CO 配置步骤清单

    一.FI配置 01. 创建公司代码:企业结构-定义-财务会计-编辑/复制/删除/检查公司代码.编辑公司OX02 02. 创建会计科目表 OB13 03. 定义会计年度变式 OB29 04. 创建信贷控 ...

  5. 小程序 青少儿书画 利用engineercms作为服务端

    因为很多妈咪们喜欢发布自己宝宝的作品,享受哪些美好时刻,记录亲子创作过程. 为了方便妈咪们展示亲子创作,比如宝宝们画作,涂鸦,书法,作文,其他才艺,特利用engineercms作为服务端,重新设计了一 ...

  6. [Android GMS 认证] keystore/keymaster/Attestation的问题

    首先确定写入key,操作如下: 检查 /persist/data/sfs 目录下是否有key文件存在     adb shell ls -la /persist/data/sfs 做过key prov ...

  7. 从零自学Java-9.描述对象

    1.为类或对象创建变量:2.使用对象和类的方法:3.调用方法并返回一个值:4.创建构造函数:5.给方法传递参数:6.使用this来引用对象:7.创建新对象. 程序VirusLab:测试Virus类的功 ...

  8. 辽宁移动宽带体验及魔百盒M101s-2刷机

    一.背景 坐标:辽宁 某城,移动宽带100M. 设备:移动赠送,华为光猫一只,魔百盒M101s-2电视盒子 一只,据安装人员说这个魔百盒是移动自己开发设计的. 二.上网体验 上网:浏览一般网站没问题. ...

  9. PHP实现一个简陋的注册登录页面

    PHP实现一个简陋的注册登录页面 今天来水一篇没有**用的 /滑稽脸,代码简陋臃肿考虑不全,各位大佬轻喷,还望不吝赐教. 首先考虑了一下需要至少四个页面:register.html.register. ...

  10. MySQL基本简单操作02

    MySQL基本简单操作 先进入Mysql容器. [root@promote ~]# docker exec -it mysql /bin/bash root@30d60b852cf5:/# mysql ...