Go 公式ブログは 2026-10-14、Go 1.27 で HTTP/1 の接続再利用が改善されると解説しました。これまでは応答の本文を読み切らずに閉じると接続を使い回せず、気づかないうちに毎回新しい接続を張っていました。Go で HTTP クライアントを書く開発者は、コードを変えずに恩恵を受けられます。
主なポイント
- HTTP/1 では応答が 1 本の接続上に順に流れるため、本文が残ったままだと次のリクエストに使えません。ステータスコードだけ見るコードや JSON デコーダーでも起きていました。
- Go 1.27 の
net/http.Transportは、読み残しを最大 50 ms・256 KB までバックグラウンドで読み切ってから接続を再利用します (将来変わる可能性あり)。Connection: close付きの応答では読み切りを省きます。 - 筆者の計測では、index.golang.org への 100 回の GET が Go 1.26 の約 710 ms から約 150 ms に縮みました。
- 利用者は本文を閉じるだけでよく、手作業で読み切る補助コードは不要になります。HTTP/2 は多重化のため元々この問題はありません。
