我在Angular服务人员返回旧版本的index.html(从安装服务人员的日期开始)时遇到了问题,这使我发疯了!
基本上是在重新启动浏览器(chrome)时,服务工作者正在使用旧的index.html,导致已加载已失效的mainxxx.js,并且由于IIS重写规则,我正在支持深度链接mainxxx.js返回index.html的内容(服务工作者的副作用首先返回错误的index.html)
当我软刷新或硬刷新浏览器选项卡时,会加载正确的index.html,一切都很好...也就是说,直到我关闭浏览器并重新启动,然后再重新提供旧的index.html。 :O
从下面的屏幕截图中可以看到(很抱歉,有关修订),我已经关闭了通过cache-control标头进行的缓存。.
让事情变得复杂...当我查看开发工具中的“应用程序”选项卡时,我可以看到针对该工作者的各种版本(我猜)的多个缓存实例,其中一个具有旧的index.html,另一个具有不同的一个已经缓存了较新的版本!
虽然我了解了有关服务人员的一般想法,但是我迷失了角度服务人员提供的所有代码,因此,如果有一种友善的人将我的身份指向可以帮助您的解决方案的方向,我将非常喜欢我:)
谢谢!
===== 根据要求,我的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/**"
]
}
}]
}