参考html
简介web
APPCache的优点 chrome
APPCache的工做流程 编程
如何开启APPCache? 浏览器
经过在页面中的 元素上增长 manifest 属性来开启应用缓存,就像这样:
```缓存
...服务器
```
a. manifest 属性值是 缓存清单(cache manifest) 文件,这个文件包含了浏览器须要为应用缓存的资源(文件)列表
b. 你应当在每个意图缓存的页面上添加 manifest 特性。浏览器不会缓存不带有manifest 特性的页面,除非这个页面已经被写在清单文件内的列表里了。你没有必要添加全部你意图缓存的页面的清单文件,浏览器会将用户访问过的并带有 manifest 特性的全部页面添加进应用缓存中。网络
文档加载和更新流程 session
使用了APPCache以后文档加载是这样的:app
- 当浏览器访问一个包含 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
缓存清单文件的结构
应用缓存中的资源
缓存状态
应用缓存都有一个状态,标示着缓存的当前情况
缓存陷阱
兼容性