gpt4 book ai didi

go - 如果我们不从正文中读取任何内容,是否需要 resp.Body.Close()?

转载 作者:IT老高 更新时间:2023-10-28 13:06:21 24 4
gpt4 key购买 nike

我有一个函数,它只是发出一个 get 请求来检查状态代码。它不会从 body 中读取任何内容。我还应该用 resp.Body.Close() 结束函数吗?

Callers should close resp.Body when done reading from it. If resp.Body is not closed, the Client's underlying RoundTripper (typically Transport) may not be able to re-use a persistent TCP connection to the server for a subsequent "keep-alive" request.

最佳答案

是的。当您调用 http.Get 时,该函数会在读取所有 HTTP header 后立即返回响应。尚未阅读响应的正文。 Response.Body 是与服务器的网络连接的包装器。当您从中读取时,它会下载响应的正文。

.Close() 告诉系统您已完成网络连接。如果您尚未阅读响应正文,默认的 http 传输将关闭连接。 (如果主体已被读取,传输只能重用连接,因为如果它重用与未读主体的连接,则使用该连接发出的下一个请求将收到前一个请求的响应!)

因此,如果您发出多个请求,则读取正文通常比简单的 Close()ing 更有效 - 特别是在创建成本相对较高的 TLS 连接时。

如果您不需要响应的正文,则应使用 Head 而不是 Get。 Head 不需要阅读 关闭响应正文。

关于go - 如果我们不从正文中读取任何内容,是否需要 resp.Body.Close()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18598780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com