11

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

我有以下方法作为可能的解决方案: * 使用服务工作者:添加一个按钮,触发一组查询以检索离线工作所需的所有数据。使用 service worker (workbox runtimeCaching) 缓存这些查询的所有响应。当应用程序离线时,服务工作者将“提供”查询的响应,因此应用程序将“像在线一样”工作,服务工作者作为“代理”正常执行查询。为突变和使用设置“乐观的 ui”方法workboxbackgroundSync 以同步更改(基本上在浏览器再次联机时将突变操作发送回端点)。* 使用一些 apollo 原生方法(如 apollo-cache-persist)将查询缓存存储在 localStorage 中。触发应用程序所需的所有查询,保留该缓存,如果应用程序不在线,则在进一步加载时从缓存中重新水化应用程序。

对于离线网络应用程序来说,什么是更好、更简单的方法=

4

0 回答 0