【发布时间】:2018-01-13 05:00:14
【问题描述】:
我们的应用是 Polymer 2 单页应用,我们有一些自定义构建步骤来生成资源的版本化文件 (gulp-rev-all)。一切运行良好,但我们需要实现应用程序的安全刷新。我们正在做的是我们将最新安装的 git commit 保存在与应用程序一起提供的文件中,我们会定期提取该文件并提醒用户有新版本可用并要求他们单击按钮刷新应用程序。
问题是我们正在使用带有预缓存的服务工作者作为默认的 Polymer 构建提供的。这意味着当我们执行 location.reload() 时,我们实际上是从 service worker 获取内容(index.html),而不是从服务器获取。
所以问题是:我们如何强制使 service worker 失效并强制刷新 service-worker.js 和 index.html?
【问题讨论】:
-
注册Service Worker时,可以监听更新,检测到更新时向Service Worker发送消息。在您的 service worker 中,您可以收听这些消息并对其采取行动(例如,调用
skipWaiting,导致下一个 service worker 立即接管)
标签: javascript polymer service-worker polymer-2.x