我们正在慢慢将graphql添加到我们的react项目并替换现有的redux集成 . 所以我试图了解apollo中的缓存并看到两件事 .
-
apollo-cache-inmemory(https://www.npmjs.com/package/apollo-cache-inmemory)
-
apollo-link-state(https://github.com/apollographql/apollo-link-state)
我们有查询在主页上调用应用列表,此应用列表将在其他页面上使用 . 所以我尝试的一个选项是在父容器中调用应用程序列表查询并在子页面中使用client.readQuery,这样对graphql服务器的调用只会在容器中发生,而在其他页面中则会发生从缓存中调用 . 但我看到一些关于在类似情况下使用apollo-link-state的帖子 . 那么在这里使用什么是最好的方法以及何时使用apollo-cache-inmemory以及何时使用apollo-link-state?
1 回答
您不应将
apollo-cache-inmemory
直接与apollo-link-state
进行比较 .apollo-cache-inmemory
用于处理Apollo Client
上的缓存,您不必为其编写任何自定义代码(除了告诉Apollo Client
使用它) . 您从api
获取的任何数据都会自动缓存 .apollo-link-state
但是用于客户端缓存,例如浏览器的NetworkStatus或当前活动选项卡 . 通常不会发送回后端服务器的状态 .因此,您只需要考虑是否需要客户端缓存 . 在我看到的大多数情况下,一个项目最终会最终使用两者 .