【发布时间】:2020-04-14 21:10:22
【问题描述】:
我拥有quackr.io,但在用户看不到我的代码的新版本时遇到了一些麻烦。 quackr 是部署在 Firebase 主机上的 PWA(Angular SSR + Service Worker)。
每当我部署新版本时,之前查看过该网站的任何人都会看到旧版本。如果您进行硬刷新,您将看到新版本。但是,如果您再次进行正常的页面刷新,它将恢复到旧版本。
- 页面刷新:接收旧版本
- 硬刷新:接收新版本(但在我再次正常刷新后立即获取旧版本)
- 在 chrome 中取消注册 service worker 并进行正常刷新:接收新版本(但在我进行第二次刷新时也会获取旧版本)。
- 我已清除所有浏览器缓存、cookie 和存储空间。同样,这适用于初始刷新,但不适用于任何后续刷新。
这是我的 firebase.json(我希望向 service worker js 添加 no-cache,它会在部署时失效,但它不起作用):
{
"hosting": {
"public": "dist/browser",
"headers": [
{
"source": "/@(ngsw-worker.js|ngsw.json)",
"headers": [
{
"key": "Cache-Control",
"value": "no-cache"
}
]
}
],
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"function": "ssr"
}
]
},
"functions": {
"predeploy": [
"npm --prefix \"$RESOURCE_DIR\" run lint",
"npm --prefix \"$RESOURCE_DIR\" run build"
]
}
}
ngsw-config.json:
{
"index": "/index.html",
"appData": {
"name": "quackr.io",
"description": "v2.0"
},
"assetGroups": [{
"name": "app",
"installMode": "prefetch",
"resources": {
"files": [
"/favicon.ico",
"/index.html",
"/*.css",
"/*.js"
]
}
}, {
"name": "assets",
"installMode": "lazy",
"updateMode": "prefetch",
"resources": {
"files": [
"/assets/**"
]
}
},
{
"name": "fonts",
"resources": {
"urls": [
"https://fonts.googleapis.com/**"
]
}
}]
}
https://quackr.io/ngsw-worker.js
任何帮助将不胜感激,谢谢大家!
【问题讨论】:
标签: angular firebase service-worker firebase-hosting angular-universal