Проверяет знание HTTP клиента и сетевой оптимизации.
HTTP клиент Go переиспользует TCP соединения через keep-alive. Это уменьшает задержки и нагрузку на сеть.
Создание TCP соединения дорого:
TCP handshake
TLS handshake
Поэтому HTTP клиент использует connection pooling.
Это делает http.Transport.
Принцип работы:
соединение открывается
сохраняется в пуле
следующий запрос может использовать его
Важно закрывать тело ответа:
resp, _ := client.Do(req)
defer resp.Body.Close()Если не закрыть Body:
соединение не вернётся в пул
создаётся новое соединение
падает производительность
Вывод:
Connection reuse уменьшает latency и экономит ресурсы.