Graphql 我应该尽量减少中继应用程序中的订阅数量吗?
我不熟悉使用graphql,我们已经使用elixir构建了一个后端graphql服务器,我们正在使用react和react relay构建一个前端应用程序 我的问题是,在查询呈现程序的根目录下有一个较大的订阅是否比为单个组件加载较小的订阅更好。我想我更喜欢使用大量较小的订阅,而不是使用较少(甚至一个)的非常大的订阅,但有人担心过多的订阅将非常繁重。这有效吗Graphql 我应该尽量减少中继应用程序中的订阅数量吗?,graphql,relay,relaymodern,react-relay,graphql-relay,Graphql,Relay,Relaymodern,React Relay,Graphql Relay,我不熟悉使用graphql,我们已经使用elixir构建了一个后端graphql服务器,我们正在使用react和react relay构建一个前端应用程序 我的问题是,在查询呈现程序的根目录下有一个较大的订阅是否比为单个组件加载较小的订阅更好。我想我更喜欢使用大量较小的订阅,而不是使用较少(甚至一个)的非常大的订阅,但有人担心过多的订阅将非常繁重。这有效吗 TIA 这里有一些事情要考虑,而且,实际上,它们都取决于你对“非常重”的定义。注意“非常重”可能意味着Elixir服务器实现与客户机上的实
<> TIA
这里有一些事情要考虑,而且,实际上,它们都取决于你对“非常重”的定义。注意“非常重”可能意味着Elixir服务器实现与客户机上的实现有很大不同,因此我将尝试在这里介绍一些您可能希望研究的方向
- 您的订阅传输是什么?WebSocket可能很昂贵,并且在某一点很难在两端进行扩展,但是如果您能够处理单向数据流(仅限于服务器到客户端),SSE(服务器发送的事件)是一个很好的选择。这更多的是对服务器的评论,而不是对客户端的评论
- 从API设计的角度来看,我要提醒大家不要使用少数(或一个)大型订阅的想法。为什么?不可避免地,您将在客户机上推送从未要求过的数据;这会对客户端和服务器都造成不必要的工作。此外,单个组件应该只能使用专门为其指定的数据订阅数据尖叫。如果您选择大型订阅路线,则必须编写大量防御代码来过滤事件流,以查找所需的数据。这不应该是您微观管理的责任,更不用说服务器上的脏事件流了