当前位置: 首页 > 知识库问答 >
问题:

取消注册/删除服务工作者

柯书
2023-03-14

我有一个糟糕的服务人员,不再更新。我首先注意到了Chrome中的问题。然后,我将以下代码放入索引中。html文件和软件中的。js(服务工作者)文件。在大多数情况下,它似乎运行良好。Firefox似乎是唯一一个没有删除服务工作者的浏览器。我使用下面的文章创建了注销脚本。

如何卸载Service Worker?

我也用过这篇文章和代码,得到了同样的结果。

我如何删除一个有缺陷的服务人员,或者实现一个“杀死开关”?

我也收到一个错误消息getAuthstrations()说它是未定义的。也不知道如何解决这个问题。

非常感谢您在这两个问题上的帮助。

<script>
navigator.serviceWorker.getRegistrations().then(function(registrations) {
 for(let registration of registrations) {
  registration.unregister();
} });</script>

共有2个答案

罗毅
2023-03-14

我偶然发现了这个答案,它似乎比大多数解决方案都好。

博文:https://medium.com/@nekrtemplar/自毁-服务工人-73d62921d717

github:https://github.com/NekR/self-destroying-sw

它用以下代码破坏自身:

self.addEventListener('install', function(e) {
  self.skipWaiting();
});

self.addEventListener('activate', function(e) {
  self.registration.unregister()
    .then(function() {
      return self.clients.matchAll();
    })
    .then(function(clients) {
      clients.forEach(client => client.navigate(client.url))
    });
});

下面是对上述代码的更深入解释和进一步改进。https://love2dev.com/blog/how-to-uninstall-a-service-worker/

公羊俭
2023-03-14

下面的示例代码将检查在浏览器中注册的服务人员并获取它。

登记忙碌的scriptURL将为您提供所有服务人员的准确url。

登记注销();将删除该服务人员。

链接:https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/unregister

if ('serviceWorker' in navigator) {
    navigator.serviceWorker.getRegistrations()
        .then(function(registrations) {
            for(let registration of registrations) {
               if(registration.active.scriptURL == 'http://localhost/my-push/myworker.js'){ registration.unregister(); }
            }
        });
}

如果要更新服务人员代码,请使用https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/update

 类似资料:
  • 常见问题:如何卸载Service Worker?对于使用JavaScript注销服务工作人员有一个很好的答案。如何让服务工作者在注销时清除任何命名缓存? 从MDN,服务工作人员将在注销之前完成任何正在进行的操作。因此,听起来应该可以监听 状态会做什么。 伸手去抓稻草,虽然我看到了卸载标志的引用,但我还没有看到它暴露在任何地方。建议?

  • 我已经运行了这个脚本 但我看到,通过这样做,我们实际上是先注册服务人员,然后注销它。对我来说,这似乎不是正确的方法。 或者,我可以点击从开发工具应用程序到服务工作者附近的取消注册链接 但当我通过检查时chrome://serviceworker-internals/ 它在列表底部显示旧的和未注册的服务人员列表(见图) 那么为什么我会在这里看到冗余服务人员列表呢?什么时候更新?这是chrome浏览器

  • 本文向大家介绍uwp 取消注册任务,包括了uwp 取消注册任务的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 我正在尝试注册服务工作者,但出现错误: 该页面使用github Pages托管:https://boopathi.in/sw-demo-iss。源代码在这里https://github.com/boopathi/sw-demo-iss 我试图理解这意味着什么,以及如何解决错误。

  • 在进行服务拆分之后,服务的数量会变得非常多,而每个服务又可能会有非常多的集群节点来提供服务,那么为保障系统的正常运行,必然需要有一个中心化的组件完成对各个服务的整合,即将分散于各处的服务进行汇总,汇总的信息可以是提供服务的组件名称、地址、数量等,每个组件拥有一个监听设备,当本组件内的某个服务的状态变化时报告至中心化的组件进行状态的更新。服务的调用方在请求某项服务时首先到中心化组件获取可提供该项服务

  • 注册服务 Frontier带有一些非常基本的基础层服务,也包括了大部分的注册商(registrar)。注册商由3个部分组成。 GlobalRegistrar将名称(字符串)关联到帐户(地址)。 HashReg将散列关联到哈希(将任何对象映射到“内容”哈希)。 UrlHint将内容哈希值关联到提示内容的位置。只有在内容存储不是内容寻址的情况下才需要,否则内容哈希已经是内容地址。如果使用它,则从URL