网站做着做着可能就有某个服务需要频繁的请求第三方接口,有时候 1秒一次,有时候 30 秒一次,有时候 1 分钟一次。
如果是 1 分钟内有两次,我们当然是希望说第一次发起连接请求后,后面的请求能否复用之前的连接。这种功能在 HTTP 中叫做 keeplive,也就是说第一个请求成功返回后并不会立即就关闭连接,而是等到一个超时,超时过后如果没有继续发起请求,那么就会关闭连接。
Go 语言我们一般使用 http.Get()
或 http.Post()
方法发起请求,那么就只要修改默认的配置即可
func init() { http.DefaultClient.Timeout = time.Second * 30 }
如果是自定义 client 则需要手动配置了
http.Client{ Timeout: 5 * time.Second, Transport: &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ Timeout: 1 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, MaxIdleConns: 100, MaxIdleConnsPerHost: 8, IdleConnTimeout: 120 * time.Second, }, }
30 * time.Second
就是用来设置 HTTp keeplive 的
目前尚无回复