批量操作
Apollo Kotlin 支持在单个HTTP请求中批量处理多个 操作 以减少网络往返次数。每次您启用批量处理执行操作时,您的客户端会等待短暂的时间间隔以收集任何 其他 可批量处理的 操作,这些操作也在执行。当间隔完成时,您的客户端将以单次HTTP请求发送所有操作。
请注意,由于等待间隔,批量处理会向 操作 增加一些延迟。需要尽可能少延迟的操作可以 放弃批量处理。
启用批量处理
您在初始化ApolloClient
实例时启用批量处理,如下所示:
val apolloClient = ApolloClient.Builder().serverUrl("https://example.com/graphql").httpBatching().build()
默认情况下,批处理引擎在发送查询前会等待10毫秒以收集查询,一个批次最多包含10个查询。您可以通过向httpBatching
方法传递额外的配置选项来配置这些默认值:
apolloClientBuilder.httpBatching(batchIntervalMillis = 50, // Wait 50msmaxBatchSize = 20 // Max 20 queries)
选择退出/进入
默认情况下,如果您启用批处理,它将对所有操作启用。单个操作可以通过向canBeBatched
方法传递false
来选择退出批处理:
apolloClient.query(MyQuery()).canBeBatched(false).execute()
如果您有一个始终希望以尽可能少的延迟执行的操作,这将非常有用。
您还可以要求单个操作加入批处理。要这样做,您首先在初始化您的ApolloClient
实例时调用canBeBatched(false)
。
val apolloClient = ApolloClient.Builder().serverUrl("https://example.com/graphql").httpBatching().canBeBatched(false).build()
现在,默认情况下,批处理已被禁用,单个操作可以通过canBeBatched(true)
加入。