【问题标题】:consequences of changing a Service Worker directory?更改 Service Worker 目录的后果?
【发布时间】:2020-11-05 16:33:49
【问题描述】:

你可能已经知道,你应该把你的服务工作人员放在基础目录中,这样它就具有整个项目的范围,否则某些功能(例如 navigator.serviceWorker.ready())将不可用。

我的问题是我最初将我的服务人员放在一个目录中,现在我觉得有点被困了。

我使用 service worker 来注册和处理网络推送通知,我想知道如果我将它移动到基本目录是否会丢失所有当前订阅

注意注册的 Service Worker 必须保持不变,不应注册新的 Service Worker

【问题讨论】:

    标签: javascript service-worker web-push service-worker-events service-worker-config


    【解决方案1】:

    如果您不想将 Service Worker 移动到基本目录中。您可以在响应中使用“Service-Worker-Allowed”标头。如果此标头存在,那么即使您的 sw.js 文件位于嵌套目录中,也会注册您的 service worker。

    Service-Worker-Allowed header '/'
    

    这里是有关此标头的官方文档。

    https://w3c.github.io/ServiceWorker/#service-worker-allowed

    【讨论】:

    • 您好,感谢您的回复,我知道此标头,但我担心它是否注册了新的服务人员。通知订阅绑定到一个服务工作者,因此如果修改范围和标头会导致注册一个新的服务工作者,那是不值得的。如果它只是像对它进行任何其他更改一样执行服务工作者的更新,那么它可以工作
    • 除非或直到您修改了 service worker 的范围,否则您是好的。标头将仅用于服务工作者的注册,仅此而已。最重要的是,您可以以编程方式控制所有服务人员状态。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-05
    相关资源
    最近更新 更多