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