Skip to main content
Technology intelligence

Interface language only; articles, sources and tags keep their original language.

开发者
Source summary

Go 1.27 改进 HTTP/1 连接复用

Published UTC+8

Go 1.27 的 net/http.Transport 会在关闭响应体后,受字节数和时长上限约束地异步排空未读 HTTP/1 响应体,以增加连接复用机会。这里的 Go 版本与 HTTP 协议版本须区分;带 Connection: close 的响应会跳过排空。

文章讨论 Go 1.26 及更早版本的 net/http 在 HTTP/1 下连接复用失败的问题:若响应体未被读到末尾就关闭,连接会被放弃,后续请求需重新建立连接,从而反复承担建连开销。

在上述旧版本中,只关心状态码而不读取响应体、或 JSON 解码后残留未读字节等看似无害的代码,都可能触发连接复用失败并造成不易察觉的性能退化。

从 Go 1.27 起,net/http.Transport 会自动异步排空未读的 HTTP/1 响应体,并设有字节上限与时间上限;对带 Connection: close 的响应则跳过排空,官方建议用户只需在不再需要时关闭响应体。

原文标题:Better HTTP/1 connection reuse 原文作者:Nicholas Husin and Damien Neil 原文日期:2026-10-14 原文链接:https://go.dev/blog/http-connection-reuse 署名与许可:原文文字按 CC BY 4.0 使用;许可:https://creativecommons.org/licenses/by/4.0/ 。原文版权说明:https://go.dev/copyright 。本稿为中文 AI 摘要改编,原文标题、作者与链接见本稿来源信息,未使用原文图片。 改编说明:AI生成摘要,已作编辑修订;须由真人核验证据并独立审核后发布。

Sources SOURCES

01
Go Blog(opens in a new tab)

Source published

自动采集来源快照

Revision notes

对照官方原文,明确旧行为适用于 Go 1.26 及更早版本、异步排空始于 Go 1.27;区分 Go 语言/运行库版本与 HTTP/1 协议版本,精简摘要。保留 AI 溯源,仍待真人核验及独立审核。

← Back to 开发者