标签:
参考
简介
APPCache的优势
APPCache的工作流程
如何开启APPCache?
通过在页面中的 元素上增加 manifest 属性来开启应用缓存,就像这样:
```
...
```
a. manifest 属性值是 缓存清单(cache manifest) 文件,这个文件包含了浏览器需要为应用缓存的资源(文件)列表
b. 你应当在每一个意图缓存的页面上添加 manifest 特性。浏览器不会缓存不带有manifest 特性的页面,除非这个页面已经被写在清单文件内的列表里了。你没有必要添加所有你意图缓存的页面的清单文件,浏览器会将用户访问过的并带有 manifest 特性的所有页面添加进应用缓存中。
文档加载和更新流程
使用了APPCache之后文档加载是这样的:
- 当浏览器访问一个包含 manifest 特性的文档时,如果应用缓存不存在,浏览器会加载文档,然后获取所有在清单文件中列出的文件,生成应用缓存的第一个版本。
- 后续再次访问时,浏览器直接从应用缓存(而不是服务器)中加载文档与其他在清单文件中列出的资源。同时,浏览器还会向 window.applicationCache 对象发送一个 checking 事件,在遵循合适的 HTTP 缓存规则前提下,获取清单文件
- 把上面提到的checking事件后获取到的服务器端的文件清单和当前浏览器缓存的清单副本比对,如果当前浏览器缓存的清单副本是最新的,浏览器将向 applicationCache 对象发送一个 noupdate 事件,到此,更新过程结束。注意,如果你在服务器修改了任何缓存资源,同时也应该修改清单文件,这样浏览器才能知道它需要重新获取资源。
- 如果清单文件已经改变,文件中列出的所有文件(也包括通过调用 applicationCache.add() 方法添加到缓存中的那些文件)会被获取并放到一个临时缓存中,遵循适当的 HTTP 缓存规则。对于每个加入到临时缓存中的文件,浏览器会向 applicationCache 对象发送一个 progress 事件。如果出现任何错误,浏览器会发送一个 error 事件,并暂停更新。
- 一旦所有文件都获取成功,它们会自动移送到真正的离线缓存中,并向 applicationCache 对象发送一个 cached 事件。鉴于文档早已经被从缓存加载到浏览器中,所以更新后的文档不会重新渲染,直到页面重新加载(可以手动或通过程序) 这里特别注意一下,当你在服务器端修改了文件同时也更新了清单文件,刷新页面却没有显示我们的修改,这并没有错误,好好理解前面那句说明,你要想看到你的修改,可以简单的再刷新一次。
上面状态的变更,我们可以运行本示例,然后查看 console控制台的输出信息:
清除离线缓存
manifest清单文件
- 缓存清单文件是一个纯文本文件,它列出了所有浏览器应该缓存起来的资源,以便能够离线访问
- 示例:
CACHE MANIFEST
# v1 - 2011-08-13(注释 「v1」很有必要存在。只有当清单文件发生变化时,浏览器才会去更新应用缓存。如果你要更改缓存资源(比如说,你使用了一张新的 header.png 图片),你必须同时修改清单文件中的内容,以便让浏览器知道它们需要更新缓存)
# This is a comment.
http://www.example.com/index.html
http://www.example.com/header.png
http://www.example.com/blah/blah
- 一个缓存清单文件可以包含三段内容 (CACHE, NETWORK, 和 FALLBACK, 下面详细讨论)
- 资源可以使用绝对或者相对 URL 来指定(例如 index.html)
- 重要:不要在清单文件中指定清单文件本身,否则将无法让浏览器得知清单文件有新版本出现。
- CACHE:
这是缓存文件中记录所属的默认段落。在 CACHE:段落标题后(或直接跟在 CACHE MANIFEST 行后)列出的文件会在它们第一次下载完毕后缓存起来。
- NETWORK:
在 NETWORK:段落标题下列出的文件是需要与服务器连接的白名单资源。所有类似资源的请求都会绕过缓存,即使用户处于离线状态。可以使用通配符。
- FALLBACK:
FALLBACK:段指定了一个后备页面,当资源无法访问时,浏览器会使用该页面。该段落的每条记录都列出两个 URI—第一个表示资源,第二个表示后备页面。两个 URI 都必须使用相对路径并且与清单文件同源。可以使用通配符。
- CACHE, NETWORK, 和 FALLBACK 段落可以以任意顺序出现在缓存清单文件中,并且每个段落可以在同一清单文件中出现多次。
一个复杂且完整的缓存清单文件示例:
CACHE MANIFEST
# v1 - 2015-05-6 12:18:00 (Version 版本号,强烈建议设置,因为只有更新了manifest清单文件,浏览器才会进行update更新缓存的操作)
# 这是一个manifest清单文件,这里CACHE段落中列出了需要缓存的文件.
cache_1.txt
cache_2.html
# 列出的文件是需要与服务器连接的白名单资源。所有类似资源的请求都会绕过缓存,即使用户处于离线状态。可以使用通配符
NETWORK:
ApplicationCache笔记.md
#段指定了一个后备页面,当资源无法访问时,浏览器会使用该页面。该段落的每条记录都列出两个URI—第一个表示资源,第二个表示后备页面。两个 URI 都必须使用相对路径并且与清单文件同源。可以使用通配符
FALLBACK:
fallback.html fallback/fallback.html
缓存清单文件的结构
应用缓存中的资源
缓存状态
应用缓存都有一个状态,标示着缓存的当前状况
缓存陷阱
兼容性
标签:
原文地址:http://www.cnblogs.com/wxb0328/p/4494047.html