批量发送 apollo 请求
Sending apollo request outside batch
我有一个 apollo 前端 batch requests 设置。但是,有些请求不应包含在批处理中:
- 组件依赖于 "small" 版本的加载请求
- "full"请求应该同时发生,进入缓存以备后用
- 如果小请求和完整请求在同一批次中发送,则 return 直到完整请求完成,这会花费太长时间。
我想到了两个不太理想的解决方案:
- 完成小请求后开始完整请求,使用
onCompleted
。不理想,因为为了速度我想同时启动两个
- 设置两个后端端点,一个有批处理,一个没有,并使用 split 在适当的地方定向请求。可以,但我想在没有额外端点的情况下离开
有什么想法吗?
编辑:我意识到第一个解决方案不好,因为它会导致其他不相关的查询延迟 - 所以目前唯一的选择是最后一个解决方案。
我不是该主题的专家,但似乎 apllo-link-batch-http 中的 batchKey
选项正是您要找的。例如,最简单的方法是在您的操作前加上关键字:
const link = BatchHttpLink({
batchKey: operation =>
operation.name && operation.name.value.startsWith('eager_') ? 'eager' : 'normal'
});
我有一个 apollo 前端 batch requests 设置。但是,有些请求不应包含在批处理中:
- 组件依赖于 "small" 版本的加载请求
- "full"请求应该同时发生,进入缓存以备后用
- 如果小请求和完整请求在同一批次中发送,则 return 直到完整请求完成,这会花费太长时间。
我想到了两个不太理想的解决方案:
- 完成小请求后开始完整请求,使用
onCompleted
。不理想,因为为了速度我想同时启动两个 - 设置两个后端端点,一个有批处理,一个没有,并使用 split 在适当的地方定向请求。可以,但我想在没有额外端点的情况下离开
有什么想法吗?
编辑:我意识到第一个解决方案不好,因为它会导致其他不相关的查询延迟 - 所以目前唯一的选择是最后一个解决方案。
我不是该主题的专家,但似乎 apllo-link-batch-http 中的 batchKey
选项正是您要找的。例如,最简单的方法是在您的操作前加上关键字:
const link = BatchHttpLink({
batchKey: operation =>
operation.name && operation.name.value.startsWith('eager_') ? 'eager' : 'normal'
});