我正在构建PWA,并且正在寻找一种在应用程序已经打开并加载时更新服务人员的方法。
例如,用户在手机上打开过一次该应用程序,然后在一天之内切换其他应用程序而没有完全关闭PWA。
如果我在两者之间上载新版本,那么服务人员该如何更新?
也许还有一种方法可以在用户使用应用程序时通知服务有关更新的信息?
服务人员是否可以不时自动检查是否上传了新内容?整个应用程序都通过s3存储桶进行缓存并提供服务。
任何建议将不胜感激。
答案 0 :(得分:1)
来自"ServiceWorkerRegistration.update() "的MDN。
ServiceWorkerRegistration接口的更新方法尝试更新服务工作者。它获取工作程序的脚本URL,并且如果新工作程序与当前工作程序不同,则安装新工作程序。如果上一次获取是在24小时前进行的,则对worker的获取会绕过所有浏览器缓存。
if ('serviceWorker' in navigator) {
navigator.serviceWorker.register('/sw-test/sw.js', {scope: 'sw-test'}).then(function(registration) {
// registration worked
console.log('Registration succeeded.');
button.onclick = function() {
registration.update();
}
}).catch(function(error) {
// registration failed
console.log('Registration failed with ' + error);
});
};