在移动web app应用中,请求数非常昂贵,请求数过多不但耗电,耗流量,同时速度也非常的慢,为了减少请求,加快资源的加载速度,使用application cache,是一个比较不错的方案,下面通过三篇文章来全面的介绍application cache,第一篇为应用篇,第二篇为原理篇,第三篇为高级进阶篇。本篇内容主要包括三个方面
- manifest文件书写
- application cache类型
- application cache状态
manifest文件书写
要想使用application cache,首先必须为html标签添加manifest属性,该属性的值【
example.appcache】是一个位于服务器端的文件,一般可以把这个文件叫做manifest文件。
<html manifest="example.appcache"></html>
example.appcache文件路径可以是绝对路径和相对路径,绝对路径必须和网站同域,它的 MIME类型必须为 text/cache-manifest,文件的格式为utf-8, 文件的基本内容,如下所示:
CACHE MANIFEST # v1 2011-08-14 # This is another comment index.html cache.html style.css image1.png # Use from network if available NETWORK: network.html # Fallback content FALLBACK: / fallback.html上面的内容有几个需要主要的地方:
1.
第一行必须包含
CACHE MANIFEST,这两个单词之间是一个
U+0020这样的空格,后面可以有0个或者多个空格,其余的文本字符都会被忽略
2.
文件中可以包含空行,注释,片段头和片段数据,这些都是可选的
空行:可以包含0个或者多个空白或者tab字符。
注释:以#开头
片段头:
CACHE【要缓存的资源】;
NETWORK【必选请求网络的资源】,
FALLBACK【当资源请求失败时,需要转向的url】
片段数据:在CACHE片段中,每一行必须为一个合法的
URI或者
IRI reference to a resource to cache
,每一行的开始或者结束可以有空 格;NETWORK片段中,每一行必须为一个合法的
URI
或者
IRI reference to a resource to
fetch from the network
,可以使用【*】通配符;在
FALLBACK片段中,
每一行必须为一个合法的
URI
或者IRI reference to a resource,当网络不可用时,需要跳转的资源。文件中的相对地址是相对example.appcache的地址, 而不是相对于当前文档的地址。
3.第二行是一个注释,表示是一个版本号,一般会使用一个时间戳,这个版本号不是必须的,但是一般情况下就需要,至于为什么下篇文章会说明。
application cache类型:
Master entries【表示含有manifest属性的文档】
Explicit entries【位于CACHE片段中列举的资源】
Network entries【位于NETWORK片段列举的资源】
Fallback entries【位于FALLBACK中列举的资源】
注意必须至少包含下面一种类型,
同一个资源可以被标记为多种类型
application cache状态:
UNCACHED
表示app cache未被初始化
IDLE
app cache没有在当前更新的进程中。
CHECKING
表示manifest文件正在被获取和检查更新状态。
DOWNLOADING
资源已经被下载,并添加到缓存中,这时还没有更新缓存。
UPDATEREADY
表示一个新版本的app cache可用了,同时会触发一个update ready事件。
OBSOLETE
所有缓存的资源都已经过时
到此为止application cache的应用相信大家肯定是没有问题的了,那么缓存是如何更新的,我们如何能够知道缓存的状态,带着这些问题,敬请关注下篇文章【application cache 离线缓存原理篇】
感谢: