Apollo离线第一支持:服务工作者还是持久化缓存?

Apollo离线第一支持:服务工作者还是持久化缓存?,apollo,react-apollo,apollo-client,pwa,workbox-webpack-plugin,Apollo,React Apollo,Apollo Client,Pwa,Workbox Webpack Plugin,我有一个react应用程序,它使用apollo作为grapql客户端。 该应用现在需要离线支持一个子集/子应用。 有一个服务工作者(感谢workbox和webpack)对应用程序的资产进行预缓存,效果很好。 现在需要添加对数据的支持。 该应用程序需要在离线模式下工作,就像在线一样。这意味着,用户应该能够看到所有数据并执行一些变异,当应用程序再次上线时,这些变异需要同步回来 我有以下方法作为可能的解决方案: *使用服务人员: 添加一个按钮,触发一组查询以检索脱机工作所需的所有数据。 使用服务工作者

我有一个react应用程序,它使用apollo作为grapql客户端。 该应用现在需要离线支持一个子集/子应用。 有一个服务工作者(感谢workbox和webpack)对应用程序的资产进行预缓存,效果很好。 现在需要添加对数据的支持。 该应用程序需要在离线模式下工作,就像在线一样。这意味着,用户应该能够看到所有数据并执行一些变异,当应用程序再次上线时,这些变异需要同步回来

我有以下方法作为可能的解决方案: *使用服务人员: 添加一个按钮,触发一组查询以检索脱机工作所需的所有数据。 使用服务工作者(workbox
runtimeCaching
)缓存这些查询的所有响应。 当应用程序脱机时,服务人员将“服务”查询响应,因此应用程序将“如同其联机”工作,在服务人员充当“代理”的情况下正常执行查询。 为突变设置一个“乐观ui”方法,并使用
workbox
backgroundSync来同步更改(基本上,当浏览器再次联机时,将突变操作发送回端点)。 *使用一些apollo本地方法(如apollo缓存持久化)将查询缓存存储在localStorage中。触发应用程序的所有必需查询,保留该缓存,如果应用程序未联机,则在进一步加载时从缓存中重新水化应用程序


对于离线web应用程序,哪种方法更好、更简单=

您是如何结束的?你试过apollo离线吗?我终于停止使用apollo cache persist来保存缓存的数据,然后在离线时将其重新水化。还添加自定义查询解析程序和自定义变异解析程序,以便脱机时触发的每个变异都有来自此解析程序的响应。然后,变异存储在本地存储队列中,当请求同步时,我创建一个发送到服务器的同步变异对象。您有关于此主题的好文章吗?您看过吗?