Раньше при HTTP/1 одного
resp.Body.Close() было недостаточно: если тело ответа не дочитано, соединение приходилось закрывать. Следующий запрос снова тратил время на TCP и TLS.Теперь
net/http при закрытии тела асинхронно дочитывает остаток в пределах установленного лимита, чтобы сохранить соединение для следующих запросов.В тесте авторов статьи 100 запросов, которым нужен только статус ответа, заняли 150 мс вместо 710 мс. Почти пятикратное ускорение в конкретном сценарии, без изменений кода.
Закрывать `resp.Body` по-прежнему обязательно. Изменение касается HTTP/1: у HTTP/2 непрочитанное тело отдельного ответа не мешает другим запросам использовать соединение.
https://uproger.com/go-1-27-http1/
@Golang_google
#golang
