Перейти к содержимому

15. Batching запросов

Батчинг (batching) запросов — одна из ключевых оптимизаций производительности в tRPC. Вместо того чтобы отправлять каждый вызов как отдельный HTTP-запрос, tRPC объединяет несколько вызовов в один пакетный запрос.

Когда несколько компонентов вызывают tRPC запросы одновременно (или в пределах одного рендер-цикла), httpBatchLink ждёт короткое время (по умолчанию — до следующего тика event loop) и объединяет все накопившиеся запросы в один HTTP POST-запрос к серверу.

Батч-запрос отправляется как POST на /api/trpc/procedure1,procedure2,procedure3. Тело содержит массив входных данных для каждой процедуры. Ответ — массив результатов в том же порядке.

httpBatchLink принимает параметр maxURLLength для ограничения длины URL в GET-запросах. Параметр maxBatchSize ограничивает максимальное количество запросов в одном батче. Можно также отключить батчинг для конкретного запроса.

Батчинг не применяется к subscription-запросам (они используют WebSocket). Также батчинг обходится, если явно указать httpLink вместо httpBatchLink, или если запросы отправляются в разное время (например, при пользовательском взаимодействии).

Основное преимущество — снижение количества HTTP-соединений и уменьшение латентности при загрузке страницы. Вместо 10 последовательных запросов — один батчевый запрос с параллельной обработкой на сервере.