从我的根目录删除/serviceworker.js
后,Chrome仍然运行我从我的webroot中删除的服务工作者。如何从我的网站和Chrome中卸载服务工作者,以便我可以重新登录我的网站?
我已将问题跟踪到Service Work的缓存机制,我只是想暂时删除,直到我有时间调试它。我正在使用的登录脚本会重定向到Google的服务器,以便他们登录自己的Google帐户。但是我从login.php页面得到的只是一条ERR_FAILED
消息。
您可以这样以编程方式删除服务工作者:
navigator.serviceWorker.getRegistrations().then(function(registrations) {
for(let registration of registrations) {
registration.unregister()
} })
文件:getRegistrations,unregister
您还可以在Chrome Devtools的“应用程序”选项卡下删除服务工作者。
您还可以转到URL:chrome:// serviceworker-internals /并从那里取消注册服务工作者。
您可以通过Chrome开发者工具以及以编程方式执行此操作。
if(window.navigator && navigator.serviceWorker) {
navigator.serviceWorker.getRegistrations()
.then(function(registrations) {
for(let registration of registrations) {
registration.unregister();
}
});
}
你应该在你的设备中检测两个API:getRegistrations和getRegistration。服务工作者在所有平台中都没有唯一的API集。例如,某些浏览器只有navigator.serviceWorker.getRegistration
,没有navigator.serviceWorker.getRegistrations
。所以你应该考虑两者。
除了已经给出的正确答案之外,如果您还想删除SW缓存,您可以使用:
if ('caches' in window) {
caches.keys()
.then(function(keyList) {
return Promise.all(keyList.map(function(key) {
return caches.delete(key);
}));
})
}
你可以阅读more here(段落:“取消注册服务工作者”)
或者通过浏览器访问“缓存存储”部分并单击“清除站点数据”按钮: