无论当前连接如何,都强制 POST 进行后台同步 - 在 Firefox 和 Safari 上的行为?
Force a POST to Background sync regardless of current connectivity - behaviour on Firefox and Safari?
所以我已经成功地使用 Workbox 实现了后台同步,在 Chrome 上运行得非常好。我没有等待获取失败,而是立即将其推送到 bg 同步队列中 - 这样用户将永远不必等待图像上传,即使他们有网络连接。
现在,在 Safari 和 Firefox 上——我知道退路是在每次服务工作者启动时尝试后台同步。但是,在这种情况下,工作的服务并没有停止,因为网络服务没有中断。这是否意味着我只会在下次启动浏览器或启动特定 PWA 或刷新 URL 时上传此项目?
为了回答您的问题,无法确定服务人员何时会停止 运行。每个浏览器都会在一段时间没有任何事件发生后停止一个 service worker,然后在下次有事件需要处理时再次启动 service worker(fetch
、sync
等)但是每个浏览器都以不同的方式实现确切的时间。
Workbox 的后台同步实现确实有一个 manual method 可以调用它来按需开始处理队列中的项目。
也就是说,我不建议以这种方式与后台同步队列进行交互。
实际尝试上传,然后仅在失败时将项目添加到后台同步队列(自动,通过 BackgroundSyncPlugin
最简单)是推荐的用法。
您真正想要的行为,其中上传 "happen in the background",是通过 background fetch 启用的。遗憾的是,后台提取目前也仅在 Chrome 中可用。我不确定尝试在不支持它且不支持后台同步的浏览器中模拟后台获取是否会给非 Chrome 用户带来很好的体验。
所以我已经成功地使用 Workbox 实现了后台同步,在 Chrome 上运行得非常好。我没有等待获取失败,而是立即将其推送到 bg 同步队列中 - 这样用户将永远不必等待图像上传,即使他们有网络连接。
现在,在 Safari 和 Firefox 上——我知道退路是在每次服务工作者启动时尝试后台同步。但是,在这种情况下,工作的服务并没有停止,因为网络服务没有中断。这是否意味着我只会在下次启动浏览器或启动特定 PWA 或刷新 URL 时上传此项目?
为了回答您的问题,无法确定服务人员何时会停止 运行。每个浏览器都会在一段时间没有任何事件发生后停止一个 service worker,然后在下次有事件需要处理时再次启动 service worker(fetch
、sync
等)但是每个浏览器都以不同的方式实现确切的时间。
Workbox 的后台同步实现确实有一个 manual method 可以调用它来按需开始处理队列中的项目。
也就是说,我不建议以这种方式与后台同步队列进行交互。
实际尝试上传,然后仅在失败时将项目添加到后台同步队列(自动,通过 BackgroundSyncPlugin
最简单)是推荐的用法。
您真正想要的行为,其中上传 "happen in the background",是通过 background fetch 启用的。遗憾的是,后台提取目前也仅在 Chrome 中可用。我不确定尝试在不支持它且不支持后台同步的浏览器中模拟后台获取是否会给非 Chrome 用户带来很好的体验。