作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
我在生产中的网站(使用 Polymer Shop 模板构建)存在问题,尽管我进行了新的和改进的部署,但该网站仍提供旧版本的代码。
我正在使用 Polymer CLI $ polymer build
命令与 Firebase 工具一起使用 $ firebase deploy
命令将更改推送到 Firebase 托管。部署完成后,我导航到该网站只看到没有更新的更改:
Here's the before n' after shot:
with out having to hard refresh or use incognito mode.
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'
}
}
}
]
};
最佳答案
我不知道 polymer ,但这是我通常与服务人员一起做的流程。
- 在客户端我检查是否有更新,如果他/她想要更新,应用程序会通知用户。
- 用户接受新版本,然后客户端向 sw 发送消息到 跳过观看 .
client.js:
navigator.serviceWorker.register('/serviceWorker.js').then(function(reg) {
reg.addEventListener('updatefound', function() {
reg.installing.addEventListener('statechange', function() {
if (reg.installing.state == 'installed') {
// Notify the user, there is a app new version.
// User accept
reg.installing.postMessage({msg: 'skipwaiting'});
}
});
});
});
self.addEventListener('message', function(event) {
if (event.data.msg === 'skipwaiting') {
self.skipWaiting();
}
});
let refreshing;
navigator.serviceWorker.addEventListener('controllerchange', function() {
if (refreshing)
return;
window.location.reload();
refreshing = true;
});
关于polymer - 服务 worker : How to build "Fresh" version of website for each new deployment?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40446098/
我是一名优秀的程序员,十分优秀!