最新的Web开发教程

HTML5应用程序缓存


随着应用程序缓存它很容易使Web应用程序的离线版本,通过创建一个缓存清单文件。


什么是应用程序缓存?

HTML5引入了应用程序缓存,这意味着Web应用程序缓存,并没有连接到互联网访问。

应用程序缓存提供了一个应用三大优势:

  1. 离线浏览 - 用户可以使用该应用程序时,他们处于离线状态
  2. 速度 - 缓存资源加载速度更快
  3. 从服务器浏览器将只下载更新/改变资源 - 降低服务器负载

背景

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)