何时使用apollo-link-state和何时使用apollo-cache-memory

Don*_*eph 3 javascript apollo reactjs graphql react-apollo

我们正在将graphql缓慢添加到我们的react项目中,并替换现有的redux集成。因此,我试图了解阿波罗中的缓存并看到了两件事。

  1. apollo-cache-inmemory(https://www.npmjs.com/package/apollo-cache-inmemory
  2. apollo-link-state(https://github.com/apollographql/apollo-link-state

我们有查询要在主页上调用应用程序列表,并且此应用程序列表将在其他页面上使用。所以我尝试的一个选项是在父容器中调用应用程序查询列表,并在子页面中使用client.readQuery,这样对graphql服务器的调用将仅在容器中发生,而在其他页面中它将发生从缓存中调用。但是我看到一些有关在类似情况下使用apollo-link-state的帖子。那么什么是最好的方法?什么时候使用apollo-cache-inmemory?什么时候使用apollo-link-state?

And*_*ndy 5

您不应该apollo-cache-inmemory直接与进行比较apollo-link-stateapollo-cache-inmemory用来处理上的缓存Apollo Client,您无需编写任何自定义代码即可工作(除了告诉Apollo Client使用它)。您从中获取的所有数据都会api自动缓存。

apollo-link-state但是,它用于客户端缓存,例如浏览器的NetworkStatus或当前活动选项卡。通常不发回后端服务器的状态。

因此,您只需要考虑是否需要客户端缓存。在我看到的大多数情况下,一个项目最终都将同时使用这两种方法。