缓存清单“prefer-online”设置问题

时间:2013-03-01 00:52:18

标签: html5 http

设置 prefer-online 设置时,我希望浏览器每次刷新浏览器时都会请求页面,但事实并非如此。

这是我的清单:

CACHE MANIFEST

SETTINGS:
prefer-online

NETWORK:
*

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

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

(在chrome& firefox上测试)

注意:更新清单时,浏览器会重新下载资产,但仍会显示旧版本......只有在下一次加载时,浏览器才会使用新资产。为什么?

1 个答案:

答案 0 :(得分:0)

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

关于你的问题:

  

注意:更新清单时,浏览器会重新下载资产,但仍会显示旧版本......只有在下一次加载时,浏览器才会使用新资产。为什么?

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

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

您可以在此处找到有关这些主题的更详细说明:http://www.html5rocks.com/en/tutorials/appcache/beginner/