一、什么是Manifest 文件?
Manifest 文件是 HTML5 应用程序缓存 衍生出来的一种特殊的文件类型,它有如下特性:
- 每个指定了 manifest 的页面,在用户对其访问时都会被缓存。如果未指定 manifest 属性,则页面不会被缓存(除非在其他页面的 manifest 文件中已经直接指定了该页面)。
- manifest 文件的建议的文件扩展名是:".appcache",并不是必须使用这个扩展名。
- 注意 manifest 文件需要配置正确的 MIME-type,即 "text/cache-manifest"。必须在 web 服务器上进行配置声明。
二、Manifest 文件内容格式
manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。manifest 文件中的内容 可分为以下三个部分:
1、CACHE MANIFEST - 在此标题下列出的页面文件,将在首次下载后进行缓存
CACHE MANIFEST
/theme.css
/logo.gif
/main.js
文件的第一行使用 CACHE MANIFEST 关键字;上面的 manifest 文件列出了三个资源:一个 CSS 文件,一个 GIF 图像,以及一个 JavaScript 文件。当 manifest 文件加载后,浏览器会从网站的根目录下载这三个文件。然后,无论用户何时与因特网断开连接,这些资源依然是可用的。
2、NETWORK - 在此标题下列出的页面文件,需要与服务器的连接,且不会被缓存
NETWORK:
login.asp // *
NETWORK 小节规定文件 "login.asp" 永远不会被缓存,且离线时是不可用的;也可以使用星号来指示所有其他资源/文件都需要因特网连接。
3、FALLBACK - 在此标题下列出的页面文件,规定当页面无法访问时要显示的页面(比如 404 页面)
FALLBACK:
/html5/ /404.html
如上代码中 第一个 URI 是资源,第二个是替补;FALLBACK 小节规定如果无法建立因特网连接,则用 "404.html" 替代 /html5/ 目录中的所有文件的访问。
三、完整的 Manifest 文件
CACHE MANIFEST
# 2012-02-21 v1.0.0
/theme.css
/logo.gif
/main.js
NETWORK:
login.asp
FALLBACK:
/html5/ /404.html
四、更新缓存
一旦应用中的文件被缓存,它就会保持缓存直到我们手动声明更新,如果我们想要更新已经缓存在客户端的文件,可以使用如下方法:
- 用户清空浏览器缓存
- manifest 文件被修改:文件中 以 "#" 开头的是注释行,但也可满足其他用途。应用的缓存会在其 manifest 文件更改时被更新。如果您编辑了一幅图片,或者修改了一个 JavaScript 函数,这些改变都不会被重新缓存。更新注释行中的日期和版本号是一种使浏览器重新缓存文件的办法。
- 由程序来更新应用缓存