javascript - 当现有的“坏” serviceWorker 处于活动状态并首先缓存时强制 serviceWorker 更新
问题描述
我有一个问题,很像这个问题,现在已经有几年了。
我遇到的问题是 [a] 应用程序代码的新 JS 取消注册 ServiceWorker 或跳过等待未被解析,因为应用程序代码由旧 ServiceWorker 提供服务,并且 [b] 我完全控制服务器,但是使用 Clear-Site-Data: 响应标头不起作用,因为所有应用程序的文件都是从 ServiceWorker 或缓存提供的。它永远不会看到那个标题。唯一的新请求是向不同子域上的 API 发出的。
世界上有很多用户在使用这个应用程序。我该怎么做才能让安装了旧 serviceWorker 并在其浏览器中运行的客户端来观察新的更新?
解决方案
在更新检查期间对底层服务工作者脚本文件的请求应始终绕过 HTTP 缓存和现有服务工作者的fetch
处理程序。
您应该能够将Clear-Site-Data:
标头添加到 Web 服务器返回的底层服务工作者脚本文件的响应中,并以这种方式恢复。
此外,您应该能够根据“ kill switch ”示例中的内容在服务工作者脚本文件中包含代码,并且每当浏览器进行更新检查时都会运行它,因为更新检查将绕过缓存和反对网络服务器。
推荐阅读
- windows - Perl:在Windows中通过右键单击文件夹上的鼠标选择一个项目
- javascript - Vue,子组件说道具在视图更改时未定义
- ios - 检测手势并将其传递给模态视图控制器
- javascript - 使用我网站上的按钮运行 python 脚本
- php - 确定结合重叠范围的几个日期范围的“基数”
- python - Python:从 FuzzyWuzzy ExtractOne() 返回 Pandas DataFrame
- python - 使用win32api检查是否在后台按下键
- c++ - 警告:控制可能到达非无效函数的结尾?返校时
- c++ - 如何获取表的大小
- python - 使用requests_html抓取时如何获取最后一个元素