我如何告诉 Workbox 检查新版本(页面加载后很久)

How can I tell Workbox to check for a new version (long after page is loaded)

我有一个复杂的应用程序,它可以离线运行并在恢复在线时同步。唯一没有 "sync" 的是应用程序本身。

我知道如何在新版本 "installed" 时收到消息,但我不知道如何告诉 Workbox 检查更新。我想要相当于:

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(); // <=== THIS WITH Workbox
    }
  }).catch(function(error) {
    // registration failed
    console.log('Registration failed with ' + error);
  });
};

[编辑] 在 github 上找到这个 https://github.com/GoogleChrome/workbox/blob/master/packages/workbox-window/src/Workbox.ts#L193

但截至 2019 年 8 月,TypeScript 类型不同步。

// Very recent change in Workbox
await wb.update()

// Or
const reg = wb.register()
// ...
reg.update()

Workbox 没有在页面加载后检查更新的功能。 您如何手动触发更新检查,如下所示。

navigator.serviceWorker.register('/sw.js').then(reg => {
  setInterval(function () {
    reg.update();
  },<intervalInMilliseconds>);
});

带工作箱

您可以使用最近推出的更新方法。但是您仍然需要使用 setInterval 并调用更新功能。