微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从 React 切换到 Next.js 后,由于 Service Worker 的缓存,网站没有刷新如何强制更新?

如何解决从 React 切换到 Next.js 后,由于 Service Worker 的缓存,网站没有刷新如何强制更新?

一个基于 react 的网站有一个用于缓存的 service worker。我们使用 unregister() 代码运行该网站,并将该网站移植到 Next.js 。尽管在某些机器上,注销代码从未运行过,所以现在这些机器正在运行旧的 React 代码,并且没有反映所做的任何更改并推送到服务器。更改正在隐身和其他运行注销代码的机器上运行。它在 Caddy 服务器上。

如何强制它从服务器端刷新?我们可以在我们的机器上清除缓存或取消注册 Service Worker,但我们不知道有多少客户端拥有旧代码

谢谢!

解决方法

这样问题就解决了。制作了一个新的 Service Worker 文件,仅包含删除 Service Worker 的代码。

if ("serviceWorker" in navigator) {
  window.addEventListener("load",function () {
    navigator.serviceWorker.getRegistrations().then((registrations) 
=> {
      for (let registration of registrations) {
       registration.unregister().then((bool) => {
          console.log("unregister: ",bool);
        });
     }
    });
  });
}

并将此文件放在保存前一个 service worker 的确切位置(您可以从 chrome 开发人员工具中找到)。还包括在 index.html 或 _document.js(对于 next.js)中链接此文件的脚本标记。这应该可以解决问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。