作者:书友30905431 | 来源:互联网 | 2022-12-15 14:13
我们正在将graphql缓慢添加到我们的react项目中,并替换现有的redux集成。因此,我试图了解阿波罗中的缓存并看到了两件事。
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> Andy..:
您不应该apollo-cache-inmemory
直接与进行比较apollo-link-state
。apollo-cache-inmemory
用来处理上的缓存Apollo Client
,您无需编写任何自定义代码即可工作(除了告诉Apollo Client
使用它)。您从中获取的所有数据都会api
自动缓存。
apollo-link-state
但是,它用于客户端缓存,例如浏览器的NetworkStatus或当前活动选项卡。通常不发回后端服务器的状态。
因此,您只需要考虑是否需要客户端缓存。在我看到的大多数情况下,一个项目最终都将同时使用这两种方法。