2013-03-01 120 views
4

当设置prefer-online设置我希望浏览器在每次刷新浏览器时都请求页面,但情况并非如此。缓存清单“prefer-online”设置问题

这里是我的清单:

CACHE MANIFEST 

SETTINGS: 
prefer-online 

NETWORK: 
* 

然而,当我刷新浏览器,它只要求清单到服务器。它只在我更新清单时请求页面...

并且页面上没有设置标题(过期或最大年龄)。

(对铬& Firefox的测试)

注意:当更新清单,浏览器重新下载资产,但仍显示旧版本...这是只在浏览器使用的下一个负荷新资产。为什么?

+0

同样在这里的问题。如果可能的话,主实体应该自动重新下载,但至少在Chrome中似乎不起作用。 – kuncajs 2013-05-09 23:06:48

回答

0

我没有看到AppCache清单的用途,因为您想绕过缓存并只使用网络。请记住,无论AppCache清单如何,常规高速缓存可能仍然适用,因此请检查ExpiresLast-Modified及类似标头。

至于你的问题:

注意:当更新清单,浏览器重新下载资产,但仍显示旧版本...这是只在浏览器使用的下一个负荷新资产。为什么?

这是因为用户代理将立即使用资产的最新缓存版本,然后开始检查清单中列出的链接资源以进行更新。当用户代理检测到清单已更改,并且因此必须检查更新时,它将触发checking事件。

当更新检查过程完成时(并且可能需要很长时间,如果您拥有大量资源),它将触发一个updateready事件。在之后,只有的资源被取出(这就是为什么通常建议使用window.applicationCache.swapCache()来告诉浏览器将旧缓存替换为下一页加载的新缓存,或者只是重新加载页面并完成用它)。

你会发现关于这些话题在这里更详细的解释:http://www.html5rocks.com/en/tutorials/appcache/beginner/

+0

关于“这是因为用户代理将立即使用最新的缓存版本的资产”:使用“prefer-online”设置标志时,这不应该是真实的。 – stolsvik 2014-04-29 13:14:56