我在我的网站中使用离线缓存,并设置了以下事件处理程序来处理更新
applicationCache.addEventListener('updateready', function () {
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) {
window.applicationCache.swapCache();
window.applicationCache.update();
window.location.reload();
}
});
它起作用但对我来说似乎是多余的。我是否需要调用swapCache()和update()函数,或者一个简单的window.location.reload()是否足够,因为浏览器将在刷新时使用新文件?
答案 0 :(得分:2)
实际上根据MSDN关于Application Cache API的文档,你应该同时使用它们。
来自文档:
要将旧缓存换成新缓存,请先调用update。 当状态处于UPDATEREADY状态时,调用swapCache将 交换。
调用swapCache不会更新页面上的任何内容。它会 只需让您的网页能够访问任何进一步的动态 来自新缓存而不是旧缓存的内容。页面之后 刷新后,新创建的缓存将用于所有页内和 动态请求。
提供swapCache方法是为了方便,但不是必需的 用于基本功能。加载或刷新页面就足够了。 例如,在UpdateReady事件之后刷新页面 无需调用swapCache即可从新缓存重新加载页面。
swapCache不会导致以前加载的资源重新加载; 例如,图像不会突然重新加载,并且样式表和 脚本不会被重新分析或重新评估。唯一的变化是 随后对缓存资源的请求将获得较新的副本。