如何阻止服务工作者返回过时的 index.html?

and*_*cwk 7 angular angular-service-worker

我有一个问题,Angular Service Worker 返回旧版本的 index.html(从 Service Worker 安装之日起),这让我发疯!

基本上在浏览器(chrome)的新启动时,旧的 index.html 由服务工作者提供服务,导致加载一个失效的 mainxxx.js 并且由于 IIS 重写规则,我在玩以支持深度链接 mainxxx.js返回 index.html 的内容(服务工作者首先返回错误的 index.html 的副作用)

当我软刷新或硬刷新浏览器选项卡时,会加载正确的 index.html 并且一切正常……也就是说,直到我关闭浏览器并重新开始,然后再次提供旧的 index.html :O

正如您从下面的屏幕截图中看到的(对编辑感到抱歉),我已经通过缓存控制标头关闭了缓存。

在此处输入图片说明

使事情复杂化......当我查看开发工具中的“应用程序”选项卡时,我可以看到不同版本(我猜)的缓存的多个实例,一个是旧的 index.html,另一个是新版本缓存!

虽然我了解服务工作者的一般想法,但我迷失在 angular service worker 提供的所有代码中,所以如果有好心的人能指出对我有帮助的解决方案的方向,我会很高兴的 :)

谢谢!

===== 根据要求,我的 ngsw-config.json 是标准的开箱即用版本..

{
  "index": "/index.html",
  "assetGroups": [{
    "name": "app",
    "installMode": "prefetch",
    "resources": {
      "files": [
        "/favicon.ico",
        "/index.html",
        "/*.css",
        "/*.js"
      ]
    }
  }, {
    "name": "assets",
    "installMode": "lazy",
    "updateMode": "prefetch",
    "resources": {
      "files": [
        "/assets/**"
      ]
    }
  }]
}
Run Code Online (Sandbox Code Playgroud)