15. Batching запросов
Батчинг (batching) запросов — одна из ключевых оптимизаций производительности в tRPC. Вместо того чтобы отправлять каждый вызов как отдельный HTTP-запрос, tRPC объединяет несколько вызовов в один пакетный запрос.
Как работает httpBatchLink?
Заголовок раздела «Как работает httpBatchLink?»Когда несколько компонентов вызывают tRPC запросы одновременно (или в пределах одного рендер-цикла), httpBatchLink ждёт короткое время (по умолчанию — до следующего тика event loop) и объединяет все накопившиеся запросы в один HTTP POST-запрос к серверу.
Формат батч-запроса
Заголовок раздела «Формат батч-запроса»Батч-запрос отправляется как POST на /api/trpc/procedure1,procedure2,procedure3. Тело содержит массив входных данных для каждой процедуры. Ответ — массив результатов в том же порядке.
Настройка httpBatchLink
Заголовок раздела «Настройка httpBatchLink»httpBatchLink принимает параметр maxURLLength для ограничения длины URL в GET-запросах. Параметр maxBatchSize ограничивает максимальное количество запросов в одном батче. Можно также отключить батчинг для конкретного запроса.
Когда батчинг не работает
Заголовок раздела «Когда батчинг не работает»Батчинг не применяется к subscription-запросам (они используют WebSocket). Также батчинг обходится, если явно указать httpLink вместо httpBatchLink, или если запросы отправляются в разное время (например, при пользовательском взаимодействии).
Преимущества батчинга
Заголовок раздела «Преимущества батчинга»Основное преимущество — снижение количества HTTP-соединений и уменьшение латентности при загрузке страницы. Вместо 10 последовательных запросов — один батчевый запрос с параллельной обработкой на сервере.