相关疑难解决方法(0)

如何卸载服务工作者?

/serviceworker.js从我的根目录中删除后,Chrome仍然运行我从我的webroot中删除的服务工作者.如何从我的网站和Chrome中卸载服务工作者,以便我可以重新登录我的网站?

我已将问题跟踪到Service Work的缓存机制,我只是想暂时删除,直到我有时间调试它.我正在使用的登录脚本会重定向到Google的服务器,以便他们登录自己的Google帐户.但是我从login.php页面得到的只是一条ERR_FAILED消息.

html5 google-chrome service-worker

132
推荐指数
7
解决办法
6万
查看次数

如何删除有缺陷的服务工作者,或实施"kill switch"?

我正在玩我的计算机中的服务工作者API,所以我可以掌握如何在我的真实应用程序中从中受益.

我遇到了一个奇怪的情况,我注册了一个拦截fetch事件的服务工作者,因此它可以在向源发送请求之前检查其缓存中是否有所请求的内容.问题是这段代码有一个错误,导致函数无法发出请求,因此我的页面留空; 什么都没发生.由于服务工作者已经注册,第二次加载页面时它会拦截第一个请求(加载HTML的请求).因为我有这个错误,那个fetch事件失败了,它从不会请求HTML,所有我都看到它是一个空白页面.

在这种情况下,我知道删除坏服务工作者脚本的唯一方法是通过chrome://serviceworker-internals/控制台.如果此错误进入实时网站,这是解决它的最佳方法吗?

谢谢!

javascript service-worker

46
推荐指数
3
解决办法
2万
查看次数

Service Worker 什么时候应该自毁?

我发现这个 repo 描述了如何销毁 service worker。但是我没有找到任何描述工人何时应该销毁/卸载/取消注册自己的资源。

当我开发网站时,我经常使用端口 8080。我可以在有 Service Worker 的站点 X 上工作,然后在没有 Service Worker 的站点 Y 上工作,但原来的和现在不正确的 Service Worker 仍然存在。

Service Worker 决定自行卸载的逻辑有点棘手,因为我们想要:

  • 允许 Service Worker 离线工作。
  • 允许 Service Worker 在强制 wifi 门户中幸存下来。
  • 检测浏览器在线但该站点不应该有 Service Worker,或者 Service Worker 应该是不同的。

是否有围绕此的标准机制或约定?

javascript offline self-destruction service-worker progressive-web-apps

7
推荐指数
1
解决办法
342
查看次数

如何注销和删除旧服务人员?

我已经使用.register注册了一个服务woker,可以在开发工具的“应用程序”选项卡中看到。现在我的问题是如何注销此服务工作者。

我已经运行了这个脚本

if ('serviceWorker' in navigator) {
        window.addEventListener('load', function() {
                console.group('====SW registration=======');
                navigator.serviceWorker.register('/sw.js', {scope: './'}).then(function(registration) {
                    console.log('SW registratered successfully');
                    console.log(registration);
                    registration.unregister().then(function(result) {
                        console.log('Unregistered done', result);
                    });
                }).catch(function(error){
                    console.error('sw registration failed', error);
                });
                console.groupEnd();
        });
}
Run Code Online (Sandbox Code Playgroud)

但是我看到这样做,实际上是在先注册服务工作者,然后再取消注册。这对我来说似乎不是正确的方法。

或者,我可以从开发工具“ 应用程序”>“服务工作者”中单击服务工作者附近的注销链接,还可以单击“ 应用程序”>“清除存储”,然后在新选项卡中重新打开URL。

但是当我通过chrome:// serviceworker-internals /查看时

它在列表的底部显示旧的和未注册的服务人员的列表(参见图片)

未注册的软件

那么,为什么在这里看到冗余服务人员列表?什么时候更新?这是chrome浏览器的默认行为吗?

google-chrome-devtools service-worker

0
推荐指数
1
解决办法
3867
查看次数