【发布时间】:2021-06-28 12:31:23
【问题描述】:
我正在构建一个 Angular 11 应用程序,用于使用以下命令在生产环境中部署:
npm install
npm run build -- --prod --outputHashing=all
我遇到的问题是,一旦部署,当我使用浏览器访问应用程序的 URL 时,我仍然看到应用程序的旧版本。
我最初认为这是一个缓存问题,即使我使用--outputHashing=all 选项进行编译(据我所知,dist 文件夹中的输出文件似乎具有随机文件名)。似乎是这样:如果我在 Chrome 的开发选项中禁用缓存后刷新页面,它现在会显示更新的应用程序。
但是,问题出在这里:如果我关闭浏览器并再次打开它...我会返回查看旧应用程序!因此,清除缓存似乎是一种临时解决方案。
经过进一步调查,我怀疑它与 Angular 的 service workers 有关,因为当我在打开 Chrome 的开发工具的情况下加载页面时,我可以看到很多网络调用被标记为 Served from service worker。
但是,我不是 Angular 方面的专家,不知道如何进一步诊断。我已经阅读了 Angular 网站上关于服务人员的文档,但它并没有帮助我找出问题所在。谁能指出我正确的方向?这是我的服务工作者配置文件,它是在创建应用程序时自动生成的。如果我还需要提供其他文件,请告诉我:
{
"$schema": "./node_modules/@angular/service-worker/config/schema.json",
"index": "/index.html",
"assetGroups": [
{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/manifest.webmanifest",
"/*.css",
"/*.js"
]
}
},
{
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**",
"/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
]
}
}
]
}
如果有任何区别,应用程序托管在运行嵌入式 Katana 网络服务器的 .NET Core 服务中,但它看不出有什么区别,它只是提供文件而无需进一步操作。
【问题讨论】:
标签: angular angular-service-worker angular11