添加文件index.appcache, 内容为:
[html] view plain copy
- CACHE MANIFEST
- index.html
- index.css
- index.js
- logo.jpg
同时修改index.html, 添加
[html] view plain copy
- <html manifest="index.appcache">
更新缓存,一旦应用被缓存,它就会保持缓存直到发生下列情况:
- 用户清空浏览器缓存
- manifest 文件被修改
- 由程序来更新应用缓存
更新appcache文件会导致所有文件重新请求,
注: 更新index.appcache会导致所有文件都重新请求, 但当次并不生效而是要等到下一次请求才能生效, 当次显示还是采用之前缓存过得文件。
appcache文件格式
manifest 文件是简单的文本文件,它告知浏览器被缓存的内容(以及不缓存的内容)。
manifest 文件可分为三个部分:
- CACHE MANIFEST - 在此标题下列出的文件将在首次下载后进行缓存,等价于CACHE:
- NETWORK - 在此标题下列出的文件需要与服务器的连接,且不会被缓存
- FALLBACK - 在此标题下列出的文件规定当页面无法访问时的回退页面(比如 404 页面)
我们更新index.appcache文件如下
[html] view plain copy
- CACHE MANIFEST
- index.css
- CACHE:
- logo.jpg
- NETWORK:
- *
- FALLBACK:
[html] view plain copy
- info.html 404.html
注意: 主页一定会被缓存起来的,因为AppCache主要是用来做离线应用的,如果主页不缓存就无法离线插件了,因此把index.html添加到NETWORK中是不起效果的。
详细可以查看 http://www.whatwg.org/specs/web-apps/current-work/#offline
AppCache不足
AppCache设计初衷是为了离线查看,尽量把能离线的文件缓存到本地,以供离线时能正常查看 ,但对在线更新并未提供太多机制和优化方案。html5 AppCache虽然没有提供太多定制, 但我们可以根据不同应用场景提供不同的优化方案:
比如针对hybrid方案,可改进点: 1、 对manifest文件更新,会重新请求所有文件,实际上可能只更新了很少量文件。( 虽然重新请求资源会返回304, 但每个文件还会发起请求) 针对此点可以只更新需要更新的文件, 比如可以建立一个文件版本或者MD5映射,对相同版本或者MD5不再请求 2. manifest文件每次都会请求,我们可以按照一定时间更新一次,或者启动时更新一次,以减少manifest文件更新次数 3. 对hybrid方案还可以在打开app之前预缓存,提前下载文件或者更新manifest文件。
参考文献:http://blog.csdn.net/liqinghua1653/article/details/31387761