2.1 Application Cache
2.1.4 applicationCache对象
该对象是window对象的直接子对象,window.applicationCache
基类:DOMApplicationCache
事件列表:
事件 | 接口 | 触发条件 | 后续事件 |
---|---|---|---|
checking | Event | 用户代理检查更新或者在第一次尝试下载manifest文件的时候,本事件往往是事件队列中第一个被触发的 | noupdate, downloading, obsolete, error |
noupdate | Event | 检测出manifest文件没有更新 | 无 |
downloading | Event | 用户代理发现更新并且正在取资源,或者第一次下载manifest文件列表中列举的资源 | progress, error, cached, updateready |
progress | ProgressEvent | 用户代理正在下载资源manifest文件中的需要缓存的资源 | progress, error, cached, updateready |
cached | Event | manifest中列举的资源已经下载完成,并且已经缓存 | 无 |
updateready | Event | manifest中列举的文件已经重新下载并更新成功,接下来js可以使用swapCache()方法更新到应用程序中 | 无 |
obsolete | Event | manifest的请求出现404或者410错误,应用程序缓存被取消 | 无 |
error | Event | manifest的请求出现404或者410错误,更新缓存的请求失败 | 无 |
error | Event | manifest文件没有改变,但是页面引用的manifest 文件没有被正确地下载 | 无 |
error | Event | 在取manifest列举的资源的过程中发生致命的错误 | 无 |
error | Event | 在更新过程中manifest文件发生变化 | 用户代理会尝试立即再次获取文件 |
属性:status 返回缓存的状态
可选值 | 匹配常量 | 描述 |
---|---|---|
0 | appCache.UNCACHED | 未缓存 |
1 | appCache.IDLE | 闲置 |
2 | appCache.CHECKING | 检查中 |
3 | appCache.DOWNLOADING | 下载中 |
方法
方法名 | 描述 |
---|---|
update() | 发起应用程序缓存下载进程 |
abort() | 取消正在进行的缓存下载 |
swapcache() | 切换成本地最新的缓存环境 |
manifest解析机制
注意事项
- 站点离线存储的容量限制是5M
- 如果manifest文件,或者内部列举的某一个文件不能正常下载,整个更新过程将视为失败,浏览器继续全部使用老的缓存
- 引用manifest的html必须与manifest文件同源,在同一个域下
- 在manifest中使用的相对路径,相对参照物为manifest文件
- CACHE MANIFEST字符串应在第一行,且必不可少
- 系统会自动缓存引用清单文件的 HTML 文件
- manifest文件中CACHE则与NETWORK,FALLBACK的位置顺序没有关系,如果是隐式声明需要在最前面
- FALLBACK中的资源必须和manifest文件同源
- 当一个资源被缓存后,该浏览器直接请求这个绝对路径也会访问缓存中的资源。
- 站点中的其他页面即使没有设置manifest属性,请求的资源如果在缓存中也从缓存中访问