设置 prefer-online 设置时,我希望浏览器每次刷新浏览器时都会请求页面,但事实并非如此。
这是我的清单:
CACHE MANIFEST
SETTINGS:
prefer-online
NETWORK:
*
然而,当我刷新浏览器时,它只向服务器请求清单。它只在我更新清单时请求页面...
并且页面上没有设置标题(过期或最大年龄)。
(在chrome& firefox上测试)
注意:更新清单时,浏览器会重新下载资产,但仍会显示旧版本......只有在下一次加载时,浏览器才会使用新资产。为什么?
答案 0 :(得分:0)
我没有看到AppCache清单的用途,因为您想绕过缓存并只使用网络。请记住,无论AppCache清单如何,常规缓存都可能仍然适用,因此请检查Expires
,Last-Modified
和类似标题。
关于你的问题:
注意:更新清单时,浏览器会重新下载资产,但仍会显示旧版本......只有在下一次加载时,浏览器才会使用新资产。为什么?
这是因为用户代理将立即使用资产的最新缓存版本,然后开始检查清单中列出的链接资源以进行更新。当用户代理检测到清单已更改,因此必须检查更新时,它将触发checking
事件。
更新检查过程完成后(如果您有大量资源可能需要很长时间),它将触发updateready
事件。只有在此事件之后获取的资源才是全新的(这就是为什么通常建议使用window.applicationCache.swapCache()
告诉浏览器将旧缓存替换为下一页加载的新缓存,或者只是重新加载页面并完成它。)
您可以在此处找到有关这些主题的更详细说明:http://www.html5rocks.com/en/tutorials/appcache/beginner/