HTML5应用程序缓存:逐步添加/删除项目?

时间:2014-05-30 16:30:41

标签: html5 html5-appcache

想象一下以下情况:用户来到网站,他打算离线使用它。因此,我们会缓存项/a/b/c。那么Appcache清单应该如下所示:

CACHE MANIFEST
# user foo

CACHE:
/a
/b
/c

NETWORK:
*

一天后,他回来了,用户也希望离线使用/d。所以我们将清单改为:

CACHE MANIFEST
# user foo

CACHE:
/a
/b
/c
/d

NETWORK:
*

现在提问:我们可以阻止用户的浏览器重新提取/a/b/c吗?

反过来可能吗?即删除资源而不重新获取其余资源?

1 个答案:

答案 0 :(得分:1)

不,根据规范,如果清单已更改,则会下载所有资源并再次缓存。

http://www.whatwg.org/specs/web-apps/current-work/multipage/offline.html#appcacheevents: 当用户访问声明清单的页面时,浏览器将尝试更新缓存。它通过获取清单的副本来实现此目的,并且如果清单自用户代理上次查看后已更改,则重新加载它提及的所有资源并重新缓存它们

编辑:我一般不在Firefox中工作,但他们的文档有以下警告: 如果清单文件已更改,则清单中列出的所有文件以及通过调用applicationCache.add()添加到缓存中的文件都将被提取到临时缓存中,遵循相应的HTTP缓存规则。对于提取到此临时缓存中的每个文件,浏览器会将progress事件发送到applicationCache对象。如果发生任何错误,浏览器将发送错误事件,并且更新将停止。

那么,如果a,b和c上的缓存足够长,他们可能不会再次下载? 使用Safari,我似乎再次下载了它们。