ExtendableEvent.waitUntil - 有什么方法可以增加重试的频率吗?

ExtendableEvent.waitUntil - is there any way to increase the frequency of retries?

我正在为一个客户构建一个 pwa,它将列出他们员工即将完成的任务。他们通常位于移动服务较差的地区,因此目的是在有数据时下载记录,然后从 indexeddb 本地加载。

我的初衷是使用“定期同步”,直到我意识到最大刷新时间是每 12 小时一次。

接下来我进入常规后台同步,js 应用程序向 service worker 发送同步请求,service worker 运行 ExtendableEvent.waitUntil 上的功能如 Google的后台同步示例:

self.addEventListener('sync', function(event) {
  if (event.tag == 'myFirstSync') {
    event.waitUntil(doSomeStuff());
  }
});

但是我发现 event.waitUntil 似乎每 5 分钟才重新尝试调用一次,我想要更快的刷新率(更像是每 30 秒一次)。

我有 2 个问题 - 首先,是否可以加快 waitUntil 的重试率。

也许更重要的是,这甚至是一个有用的策略吗?在我看来,我的应用程序可以重复调用更新功能,甚至不会打扰服务人员。我实际上从后台同步中获得了什么优势?

pwa 工具包中还有其他更适合我需求的东西吗?

(常规,“非周期性”)后台同步的好处是重试的生命周期超出了您的网络应用程序打开的生命周期。同步最终成功后,您可以执行一些操作,例如显示通知(假设用户已授予权限),将用户带回您的 Web 应用以继续工作。

由于此功能涉及 运行后台代码,在打开浏览器但网络应用程序可能关闭的情况下,浏览器对代码执行 运行 的频率施加了限制。您无法增加重试的频率。

但是您绝对可以在服务工作者和后台同步的上下文之外实现重试逻辑,方法是 运行在您的 Web 应用程序本身的上下文中以您希望的频率编写代码。但在这种情况下,重试将在用户关闭您的网络应用程序后立即停止。