【问题标题】:Force serviceWorker update when existing "bad" serviceWorker is active and cache first当现有的“坏” serviceWorker 处于活动状态并首先缓存时强制 serviceWorker 更新
【发布时间】:2020-07-22 12:30:10
【问题描述】:

我有一个问题,很像this question,现在已经有几年了。

我遇到的问题是 [a] 应用程序代码的新 JS 取消注册 ServiceWorker 或跳过等待未被解析,因为应用程序代码由旧 ServiceWorker 提供服务,并且 [b] 我完全控制服务器,但使用 Clear-Site-Data: 响应标头不起作用,因为所有应用程序的文件都是从 ServiceWorker 或缓存提供的。它永远不会看到那个标题。唯一的新请求是针对不同子域上的 API 发出的。

世界上有很多用户在使用这个应用程序。我可以做些什么来让安装了旧 serviceWorker 并在其浏览器中运行的客户端来观察新的更新?

【问题讨论】:

    标签: javascript vue.js caching progressive-web-apps service-worker


    【解决方案1】:

    更新检查期间对底层服务工作者脚本文件的请求应始终绕过 HTTP 缓存和现有服务工作者的 fetch 处理程序。

    您应该能够将 Clear-Site-Data: 标头添加到您的 Web 服务器返回的底层服务工作者脚本文件的响应中,并以这种方式恢复。

    此外,您应该能够按照“kill switch”示例中的内容在 service worker 脚本文件中包含代码,并且每当浏览器进行更新检查时都会运行它,因为同样,更新检查将绕过缓存并攻击 Web 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-07
      • 2016-01-07
      相关资源
      最近更新 更多