Web - 定期同步和同步之间有什么区别?

Web - what is the differences between periodic sync and sync?

我在 PWA 的后台遇到了两种不同类型的同步 sync周期同步。它们的资源不多,现有资源对示例工作代码的解释不够。

所以我的主要问题是:除了频率之外,它们之间还有其他逻辑差异吗?

我的附带问题是:他们自己处理请求吗?我问这个是因为我想要更灵活的东西,我的意思是我正在管理离线和在线情况并将数据保存在 IDB 它们中我处于离线状态,我只需要一个后台进程来从我的自定义 IDB 获取我的离线数据并将它们发送到服务器。

这里有一些用例可以帮助说明差异。另请记住,截至 2021 年 2 月,Background Sync is only available in Chrome and Chromium-based browsers, and Periodic Background Sync is only available in Chrome after a progressive web app has been installed.

后台同步

用例正在“后台”定期重试失败的 update/upload 操作(通常是 POSTPUT),直到成功。例如,您可以想象尝试将一张新照片上传到社交媒体网站,但您的网络连接已断开。作为用户,您希望在将来的某个时候重试该上传。

API 仅提供通过 Web 应用程序服务工作者中的 sync 事件触发重新尝试网络操作机会的机制。由开发人员存储有关失败请求的信息(通常在 IndexedDB 中)并实际重新发送它,并指示 sync 是成功还是再次失败。

(如果您不想自己处理所有事情,workbox-background-sync library 可以帮助您了解实施细节。)

定期后台同步

用例是“在后台”刷新缓存,以便用户下次打开您的 Web 应用程序时,数据比其他情况下更新鲜。您可以想象一个已安装的新闻渐进式 Web 应用程序使用定期后台同步来每天早上更新其头条新闻的缓存。

在幕后,这通过在您的服务工作者中调用一个 periodicsync 事件来实现,在该事件处理程序中,您通常会发出一个 GET 请求来更新缓存中存储的内容存储 API 或 IndexedDB。