随着应用程序缓存它很容易使Web应用程序的离线版本,通过创建一个缓存清单文件。
什么是应用程序缓存?
HTML5引入了应用程序缓存,这意味着Web应用程序缓存,并没有连接到互联网访问。
应用程序缓存提供了一个应用三大优势:
- 离线浏览 - 用户可以使用该应用程序时,他们处于离线状态
- 速度 - 缓存资源加载速度更快
- 从服务器浏览器将只下载更新/改变资源 - 降低服务器负载
背景
Web应用程序包含了需要从网络下载的网页。 为了做到这一点,必须有网络连接。 然而,有些时候用户无法连接到网络,由于他们无法控制的情况下,许多实例。 HTML5提供即使不使用缓存清单的网络连接来访问Web应用程序的能力。
Web应用程序包括通过网址标识的资源。 这些可以是HTML,CSS,JavaScript,图片或需要被渲染的web应用程序的任何其他来源。 它们的地址可以被复制到一个清单文件,它可以定期通过Web应用程序的作者进行更新,这说明添加或删除任何新的网络地址。 当连接到首次网络,网络浏览器将读取HTML5 manifest文件,下载提供的资源,并将它们存储在本地。 然后,在没有网络连接的,Web浏览器将转移到本地副本,而不是和Web应用程序离线渲染。
浏览器支持
在表中的数字规定,完全支持应用程序缓存的第一个浏览器版本。
API | |||||
---|---|---|---|---|---|
Application Cache | 4 | 10.0 | 3.5 | 4 | 11.5 |
HTML缓存Manifest实施例
下面的例子示出了具有缓存清单的HTML文档(for offline browsing) :
例
<!DOCTYPE HTML>
<html manifest="demo.appcache">
<body>
The content of the document......
</body>
</html>
试一试» 缓存清单基础
为了使离线应用工作,缓存清单文件必须由Web开发人员创建。 如果Web应用程序超过一个以上的页面,然后每个页面都要有一个指向缓存清单的清单属性。 引用清单的每一页都将被存储在本地。 缓存清单文件是位于服务器的另一部分的文本文件。 它必须包含以下内容类型提供:
text/cache-manifest
要启用应用程序缓存,包括manifest在文档的属性<html>标签:
<!DOCTYPE HTML>
<html manifest="demo.appcache">
...
</html>
与每一页manifest当用户访问其指定的属性将被缓存。 如果manifest没有指定属性,页面不会被缓存(unless the page is specified directly in the manifest file) 。
建议的文件扩展的清单文件是: ".appcache"
清单文件需要与送达correct media type ,这是"text/cache-manifest" 。 必须在Web服务器上配置。
清单文件
清单文件是一个简单的文本文件,它告诉浏览器缓存什么(and what to never cache) 。
清单文件有三个部分:
- CACHE MANIFEST -他们正在下载的第一次后,该标题下所列的文件将被缓存
- NETWORK -文件该标题下的上市要求与服务器的连接,并且永远不会被缓存
- FALLBACK -此标题下列出的文件指定备用页面,如果页面无法访问
CACHE MANIFEST
第一行中,CACHE MANIFEST,是必需的:
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
上面的清单文件列出了三个资源:一个CSS文件,GIF图像和JavaScript文件。 当加载清单文件,浏览器就会从网站的根目录下下载了三个文件。 然后,当用户没有连接到互联网时,资源将仍然可用。
网络
下面的网络部分指定文件"login.asp"不应该被缓存,并且将无法使用脱机:
NETWORK:
login.asp
星号可用于指示所有其他资源/文件需要连接到互联网:
NETWORK:
*
倒退
下面后备节指定"offline.html"将在发生在/ HTML /目录下的所有文件的送达,如果互联网连接不能建立:
FALLBACK:
/html/ /offline.html
注:第一个URI是资源,第二个是备用。
更新缓存
一旦应用程序缓存,它直到发生下列情况之一仍然缓存:
- 用户清除浏览器的缓存
- 清单文件被修改(see tip below)
- 该应用程序缓存程序更新
示例 - 完整的缓存清单文件
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html/ /offline.html
Tip:开始用行"#"是注释行,但也可以用于其他目的。 一个应用程序的缓存,只有当它的清单文件的变化进行更新。 如果您编辑图像或更改JavaScript函数,这些更改将不会重新缓存。 在更新注释行日期和版本是使浏览器重新缓存文件的一种方式。
在应用程序缓存的注意事项
小心你什么缓存。
一旦文件被缓存,浏览器将继续显示缓存的版本,即使您更改了服务器上的文件。 为了确保浏览器更新缓存,您需要更改清单文件。
注意:浏览器可能缓存的数据不同的大小限制(some browsers have a 5MB limit per site) 。