从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?
我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。
从根目录删除/serviceworker.js后,Chrome仍然运行我从webroot中删除的serviceworker。我如何从我的网站和Chrome卸载服务工作者,以便我可以登录回我的网站?
我已经将问题追溯到Service Work的缓存机制,现在我只想删除它,直到有时间调试它。我使用的登录脚本重定向到谷歌的服务器,让他们登录到他们的谷歌帐户。但是我从login.php页面得到的只是一条ERR_FAILED消息。
当前回答
仅供参考,如果你使用的是MacOS Safari浏览器,有一种方法可以强制注销service worker (Safari 12.1的步骤和图片):
Safari >首选项…>隐私>管理网站数据… 输入域名(例如。'localhost'),点击“删除”
注意:除了service worker之外,这还将删除该域的所有缓存、cookie和数据库。
其他回答
以编程方式删除Service worker:
你可以像这样通过编程方式删除service worker:
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
registration.unregister();
}
});
文档:getRegistrations, unregister
通过用户界面移除Service worker
你也可以在Chrome Devtools的Application标签下删除service worker。
仅供参考,如果你使用的是MacOS Safari浏览器,有一种方法可以强制注销service worker (Safari 12.1的步骤和图片):
Safari >首选项…>隐私>管理网站数据… 输入域名(例如。'localhost'),点击“删除”
注意:除了service worker之外,这还将删除该域的所有缓存、cookie和数据库。
如果您想在浏览器中注销所有已注册的service worker, 你可以通过打开前任来做到。
铬:Chrome: / / serviceworker-internals / 勇敢勇敢:/ / serviceworker-internals /
打开DevTools >控制台,粘贴如下:
$$('.unregister').forEach(b => b.click())
安全卸载Service Worker
if ('serviceWorker' in navigator) {
navigator.serviceWorker.getRegistrations().then(function (registrations) {
for (const registration of registrations) {
// unregister service worker
console.log('serviceWorker unregistered');
registration.unregister();
}
});
}
在Chrome中打开
chrome: / / serviceworker-internals / ?devtools
然后在控制台中F12 $ $ (' .unregister”)。forEach(b => b.click())