reactjs - 从 React 切换到 Next.js 后,由于 Service Worker 的缓存,网站没有刷新。如何强制更新?
问题描述
在 react 上制作的网站有一个用于缓存的服务人员。我们使用 unregister() 代码运行网站,并将网站移植到 Next.js。尽管在某些机器上,注销代码从未运行过,所以现在这些机器正在运行旧的 react 代码,并且没有反映所做的任何更改并推送到服务器。这些更改正在隐身和其他运行取消注册代码的机器上运行。它在 Caddy 服务器上。
如何强制它从服务器端刷新?我们可以清除缓存或注销我们机器上的服务工作者,但我们不知道有多少客户端拥有旧代码。
谢谢!
解决方案
所以问题已经解决了。制作了一个新的服务工作者文件,只包含删除服务工作者的代码。
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)中链接此文件的脚本标记。这应该可以解决问题。