首页 > 解决方案 > 如何阻止服务人员返回过时的 index.html?

问题描述

我遇到了 Angular 服务人员返回旧版本 index.html(从服务人员安装之日起)的问题,这让我发疯了!

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

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

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

在此处输入图像描述

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

虽然我了解有关服务人员的一般概念,但我迷失在 Angular 服务人员提供的所有代码中,所以如果有好心人能指出我的解决方案的方向对我有帮助的话,我会很高兴:)

谢谢!

===== 根据要求,我的 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/**"
      ]
    }
  }]
}

标签: angularangular-service-worker

解决方案


推荐阅读