首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更新我的订阅服务器的服务工作者版本?

如何更新我的订阅服务器的服务工作者版本?
EN

Stack Overflow用户
提问于 2018-12-19 09:39:03
回答 1查看 596关注 0票数 0

我使用minishlink/web-push来发送推送。我用pushnotificationclicknotificationclose事件侦听器为推送消息制作了一个服务工作者notificationclick。对于进行订阅的站点,有一个sw.js:

代码语言:javascript
复制
let timeStampInMs = new Date().getTime();
importScripts('https://super-push-site.com/serviceworker.js?ts=' + timeStampInMs);

效果很好。

但是,我制作了一个新版本的服务工作者,并将其放置在旧位置(https://super-push-site.com/serviceworker.js)上。

如何在不访问订阅站点的情况下更新我的订阅者的服务工作者版本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-29 10:37:45

在回答您的问题之前,我想指出,在服务工作者URL中添加缓存破坏器参数被认为是一种不好的做法,因为如果新的服务工作者与现有的服务工作者不同,浏览器已经将其排队用于安装。你可以在:服务工作者生命周期上读到更多关于这方面的内容。

现在,要回答你的实际问题:

当收到推送消息时,可以通过调用服务工作人员注册的update()方法手动触发更新:

代码语言:javascript
复制
self.addEventListener('push', function (event) {
    ...
    event.waitUntil(
        Promise.all([
            self.registration.showNotification(title, options);
            self.registration.update()
        ])
    );
});

您还可能希望只在服务工作人员的新版本可用时才触发self.registration.update()。要做到这一点:

  1. 将SW的版本标识符存储在变量中。
  2. 始终在推送消息有效负载中发送最新的SW版本标识符。
  3. 将两者进行比较,如果它们不匹配,则触发self.registration.update()

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53848349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档