问题
我在生产中遇到了一个网站(使用Polymer Shop模板构建)的问题,尽管我进行了新的和改进的部署,但它仍在提供旧版本的代码。
我正在使用 Polymer CLI$ polymer build
命令和 Firebase 工具$ firebase deploy
命令来推送对 Firebase 托管的更改。部署完成后,我导航到网站只看到未更新的更改:
Chrome:我首先看到的是旧版本的网站,必须“硬刷新”才能显示更改。
FireFox:我首先看到的是旧版本的网站,必须“硬刷新”才能显示更改。
这是之前的 n' 之后的镜头:
服务工作者工作流程?
我试图找出最好的工作流程是什么。我想进行设置,以便每次进行新部署时,整个站点都被清除干净,服务人员通过内部网络重置自己,我将 100% 确保现有用户将获得新部署的体验
无需硬刷新或使用隐身模式。
我是不是该...
- 删除服务工作者并在没有它的情况下部署新版本(坏主意)?
- 在 Firebase 控制台中创建一个“新项目”并重新链接自定义域(乏味)?
- 在 Firebase 控制台中找到“魔术按钮”以进行重置(是否存在)?
- 编辑
sw-precache-config.js
文件(不确定如何)? $ polymer build
在配置中处理这个sw-precache
(不确定如何)?- 甚至不知道的很棒的东西
¯\_(ツ)_/¯
?
我知道问题存在于sw-precache-config.js
文件中,但我不确定这是否是我应该解决的问题。
module.exports = {
staticFileGlobs: [
'/index.html',
'/manifest.json',
'/bower_components/webcomponentsjs/webcomponents-lite.min.js',
'/images/*'
],
navigateFallback: '/index.html',
navigateFallbackWhitelist: [/^(?!.*\.html$|\/data\/).*/],
runtimeCaching: [
{
urlPattern: /\/data\/images\/.*/,
handler: 'cacheFirst',
options: {
cache: {
maxEntries: 200,
name: 'items-cache'
}
}
},
{
urlPattern: /\/data\/.*json/,
handler: 'fastest',
options: {
cache: {
maxEntries: 100,
name: 'data-cache'
}
}
}
]
};
Service Worker 是一个了不起的工具,我绝对希望在我的项目中使用它。我只需要学习如何驯服野兽。