如何知道 service worker 是否在 gatsby-plugin-offline 中更新

How to know if service worker was updated in gatsby-plugin-offline

我已经安装了 gatsby-plugin-offline,它工作正常,但我想监听 sw 更新事件,以便我可以通知用户新版本的应用程序可用。

在此之前我使用了 offline-plugin Which I speculate is behinde gatsby's plugin? They have doc explaining how to achieve what I want here: https://github.com/NekR/offline-plugin/blob/master/docs/updates.md 但我不知道如何通过 gatsby 获取这些事件,有什么建议吗?

目前 gatsby-plugin-offlinesw-precache 的包装器,除了配置选项中显示的缓存设置外,不提供任何直接挂钩。看起来有一些方法可以通过 sw-precache 解决这个问题,所以在 gatsby 问题页面上处理 PR 或功能请求可能是值得的。

我一直在寻找完全相同的答案。

有一个事件你可以挂钩,叫做 "onServiceWorkerUpdateFound"。 只需创建(如果您还没有)一个 gatsby-browser.js 文件并执行类似的操作。

盖茨比-browser.js

exports.onServiceWorkerUpdateFound = () => {
    // do something
};

我创建了一个 <div>,它显示了一个 "new version available" 消息,其中包含一个重新加载页面的 onClick 事件(这将激活新的服务工作者)。

更多信息:Gatsby Browser APIs