如果我有一个使用GraphQL + Apollo + React构建的应用程序,只是想知道如果我在页面上有3个组件,每个组件进行不同的查询,这是否意味着从客户端向服务器发出3个请求,并返回3个请求?当我收集GraphQL将应用程序接口调用压缩到一个请求中时,它是如何工作的,但是在上面的场景中,从客户端到服务器,然后服务器再回到客户端的请求,它是如何工作的?
发布于 2019-03-01 21:56:46
从docs
查询重复数据消除可帮助减少通过网络发送的查询数量。它在缺省情况下是打开的,但是可以通过将queryDeduplication: false传递给每个请求的上下文或者在Apollo客户端设置中使用defaultOptions键来关闭它。如果启用,查询重复数据消除将在查询到达网络层之前执行。如果许多组件显示相同的数据,但您不希望多次从服务器获取该数据,则查询重复数据删除可能会很有用。它的工作原理是将一个查询与当前正在运行的所有查询进行比较。如果当前正在运行相同的查询,则新查询将映射到相同的promise,并在当前正在运行的查询返回时解析。
换句话说,只要您没有显式地将queryDeduplication
设置为false
,如果与任何正在进行的请求相匹配,Apollo就会跳过发送请求。
虽然GraphQL提供了在同一请求中发送多个查询的能力(并且Apollo支持此功能),但您可以自行编写这样的查询-- GraphQL does not会自动为您执行此操作。为了使用Apollo将多个batch查询到单个请求中,您必须使用apollo-link-batch-http。
https://stackoverflow.com/questions/54945797
复制相似问题