- Запрос на установление TCP-соединения.
- TLS-рукопожатие (TLS handshake — если оно включено).
- Отправка запроса.
- Чтение заголовков ответа.
- Чтение тела ответа.
Пять шагов HTTP-запроса и соответствующие тайм-ауты
Применение:
client := &http.Client{
Timeout: 5 * time.Second,
Transport: &http.Transport{
DialContext: (&net.Dialer{
Timeout: time.Second,
}).DialContext,
TLSHandshakeTimeout: time.Second,
ResponseHeaderTimeout: time.Second,
},
}Какие ещё настройки можно оптимизировать:
http.Transport.DisableKeepAlives
http.Transport.IdleConnTimeout
http.Transport.MaxIdleConns
http.Transport.MaxIdleConnsPerHost