【问题标题】:How to force update the service worker file in Google Devtools?如何强制更新 Google Devtools 中的 service worker 文件?
【发布时间】:2019-11-11 15:39:09
【问题描述】:
我尝试强制重新加载新的 Service Worker 文件,但它没有自动加载。我已经检查了 devtools 的“应用程序”选项卡中的“重新加载时更新”复选框,并在“源”选项卡中禁用了缓存。
我使用的是 Chrome 版本“75.0.3770.100”。
我让它工作的唯一方法是再次选中和取消选中,另一种方法是点击“skipWaiting”
有什么我遗漏的东西或我应该启用的标志吗?
感谢您的帮助!
【问题讨论】:
标签:
google-chrome-devtools
service-worker
devtools
【解决方案1】:
如果您可以在 Devtools 中看到 skipWaiting 选项,是因为您没有在安装事件中调用 self.skipWaiting()。通常,新更新的服务工作者会等到旧版本不再控制任何客户端。 self.skipWaiting() 可以防止这种等待。这是一个例子。
//This is the install event listener
self.addEventListener("install", (event) => {
console.log(self);
event.waitUntil(
caches.open(CACHE_NAME).then(cache => {
cache.addAll(STATIC_ASSETS).then(() => {
self.skipWaiting();
}).catch(error => {
logForDevelopment("An error occured while adding static assets to the cache", true);
logForDevelopment(error, true);
})
})
);
logForDevelopment("Service Worker: Installed");
});