【发布时间】:2019-08-02 15:52:01
【问题描述】:
我有一个注册服务工作者的应用程序以使该应用程序可以离线使用。现在我需要将应用程序移动到新服务器,因此我为根页面设置了 301 重定向。但是现有的缓存似乎忽略了这一点,总是在旧 URL 上提供旧应用程序。如何强制他们更新?
【问题讨论】:
标签: javascript service-worker progressive-web-apps
我有一个注册服务工作者的应用程序以使该应用程序可以离线使用。现在我需要将应用程序移动到新服务器,因此我为根页面设置了 301 重定向。但是现有的缓存似乎忽略了这一点,总是在旧 URL 上提供旧应用程序。如何强制他们更新?
【问题讨论】:
标签: javascript service-worker progressive-web-apps
另一种简单的方法是使用工作框窗口。您可以检测到新的 Service Worker 安装并提示用户重新加载页面或在未经用户许可的情况下重新加载。更多详情请阅读this。
希望对你有帮助。
【讨论】:
找到这个:https://github.com/NekR/self-destroying-sw
刷新并重新打开页面后,它终于拿起了重定向。
【讨论】:
您可以使用以下方式更新服务工作者代码:
ServiceWorkerRegistration.update();
这里有一个例子:example
注意:更新代码在浏览器中安装的 serviceworker 存在差异时运行,在这种情况下,新的 service worker 运行更新,但新代码在网站关闭并再次打开之前不可用。
【讨论】:
谢天谢地,一旦您关闭浏览器,此操作就会自动完成。
否则,您将不得不为您的 PWA 应用添加更新。更新必须包含一个新的软件(按照通常的 PWA 更新)。在任何脚本中,只需使用 location.href 执行 JS 重定向。
您似乎无法通过 HTTP 重定向来做到这一点。
【讨论】: