我已通过现有项目将网站的新版本(之前在 Polymer 上,现在在 Vue.js 上)部署到 Firebase。
我正在使用带有 Webpack 的默认 Vue.js 模板(vue init webpack my-project
)在新项目中
现在我已经部署了新版本,当我打开站点时,我只看到一个缓存的 shell,我认为这是服务工作线程的错
为了从 Firebase 获取实际的当前文件,我(以及所有以前的访问者)现在每次都必须硬刷新网站(Ctrl+F5
在火狐浏览器中)
Console
现在,在浏览器控制台(网络选项卡)中我看到:
我已将此代码添加到firebase.json
, then npm run build
尝试删除 Service Worker,但问题仍然存在
Firebase.json
{
"hosting": {
"public": "dist",
"ignore": [
"firebase.json",
"**/.*",
"**/node_modules/**"
],
"rewrites": [
{
"source": "**",
"destination": "/index.html"
}
],
"headers": [
{ "source":"/service-worker.js", "headers": [{"key": "Cache-Control", "value": "no-cache"}] }
]
}
}
上一个项目中的 Service Worker 代码
我在新部署的版本上没有使用任何服务人员。但之前的部署注册了一个服务工作者
我使用的是 Polymer 1.0 框架库中的默认 sw-precache 组件,该组件是在我使用的预配置 Polymer 入门套件模板中构建的。 Service Worker 在构建时生成
捆绑 > service-worker.js: https://jsfiddle.net/uydjzw13/ https://jsfiddle.net/uydjzw13/
解绑 > service-worker.js: https://jsfiddle.net/t42fdgow/ https://jsfiddle.net/t42fdgow/
问题:
有没有办法从所有站点访问者的浏览器中删除旧的 Service Worker,以便他们始终获得新部署的版本?也许我可以用 Webpack 或 Firebase 来做到这一点?
如果我只是从 Firebase 中删除以前使用 Service Worker 部署的版本,它会得到修复吗?
或者,也许我可以部署另一个带有服务工作人员的版本,该版本的唯一功能是删除所有以前的缓存并取消注册以前的服务工作人员(如果可能的话)?
或者我可以使用这样的东西吗?:https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/unregister https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorkerRegistration/unregister
我不知道如何正确地做到这一点,并且不意外地注册更多我也无法摆脱的服务人员。