简介
Cache Manifest 直接翻译为缓存清单,因此,大多数时候会直接将 Cache Manifest 文件称为缓存清单文件。 Cache Manifest 文件通常都会以后缀名" .manifest "结尾,它实际上是一个使用 UTF-8 进行编码的文本文件,因此,所有创建文本文件的编辑器都可以创建 Cache Manifest 文件。
CACHE MANIFEST #这一句必须存在,而且必须放在头部
# 指明缓存入口
CACHE: index.html style.css
images/logo.png
scripts/main.js
# 以下资源必须在线访问 NETWORK: login.php
# 如果 index.php 无法访问则用 404.html 代替
FALLBACK: /index.php /404.html
Cache Manifest 的组成
manifest 文件有 4 个节点
- CACHE MANIFEST 它用于声明该文件是一个缓存清单文件,在这个列表标题下的文件都将会在下载后被缓存起来,这个节点是必需的
- CACHE 指明了缓存的入口,这是一个默认入口,在此入口之后所列举的文件会在它们下载到本地后被缓存起来
- NETWORK 也是一个可选择的节点,在该节点后面所列举的文件是强制必须通过网络资源获取的,即使用户离线访问了也会直接跳过缓存而访问服务器。简单来说,就是这个节点下的文件要求连接到服务器,不会进行缓存
- FALLBACK 也是一个可选择的节点,它用来指定资源无法访问时的回调页面。在该节点下的每一行都会包括两个资源文件 URI ,第一个是资源文件 URI ,即在线访问的页面,第二个是回调 URI ,即离线状态下要访问的页面
向 manifest 文件添加注释
开发者可以为每个页面单独指定一个 manifest 文件,也可以为整个 Web 应用程序指定一个总的 manifest 文件。在 manifest 文件中可以为其添加注释,添加注释时使用符号 #
表示,该符号之前可以有空格,但是只能包含单行注释。
- 使开发者可以很明确地了解离线 Web 应用的版本
- 通过简单的修改版本号就可以轻易地通知浏览器更新
- 可以配合 JavaScript 程序来完成缓存更新
Web 应用程序的缓存只有在 manifest 文件被修改的情况下才会被更新,如果只是修改了被缓存的文件,那么用户本地的缓存还是不会被更新的,但是可以通过修改 manifest 文件告诉浏览器需要更新缓存了。
Cache Manifest 的遵循原则
- 第一行必须是 CACHE MANIFEST
- 其后,每一行都需要列出一个需要缓存的资源文件名称
- 根据需要在 NETWORK 节点下列出在线访问的白名单。白名单中的所有资源不会被缓存,使用时将直接在线访问
- 如果在白名单后还要补充需要缓存的资源,可以使用 CACHE 节点补充
- 如果要声明某 URI 不能访问时的替补 URI ,可以使用 FALLBACK 节点。在该节点后的每一行包含两个 URI ,当第一个 URI 不可访问时,浏览器将尝试使用第二个 URI
- 注释要另起一行,以符号" # "开头
配置 IIS 服务器
Cache Manifest 文件用来标明哪些文件是需要被存储的,在网页中通过指定 manifest 属性来引入一个外部的清单文件,这个文件的路径可以是相对的,也可以是绝对的。如果开发者的 Web 应用程序很多,而且希望能够集中管理 manifest 文件,那么静态文件服务器是一个很不错的选择。
不同的服务器开启支持离线缓存的方式也是不同的,例如, Apache 服务器开启支持的方式是在 conf/mime.types 中添加代码,而在 IIS 服务器中开启支持则是另外一种方式
- 在【开始】菜单下找到【 Internet 信息服务】选项打开 IIS 服务器,然后选中网站或者某个需要配置的虚拟目录,再单击右键找到【属性】选项
- 单击【属性】选项弹出相关的属性对话框,在该对话框中找到【 HTTP 头】选项卡并切换到该选项卡,然后找到【 MIME 映射】选项
- 单击【 MIME 映射】下的【文件类型】按钮弹出【文件类型】对话框,在该对话框中单击【新类型】按钮弹出一个新的对话框。在这个对话框中输入内容,在【关联扩展名】输入框中直接输
.manifest
或者manifest
,在【内容类型 MIME 】输入框中输入text/cache-manifest
离线访问系统当前时间
一个 manifest 文件会创建一份缓存,不同的 manifest 文件其缓存的内容是互不干扰的。