golang - 似乎无法删除http连接

时间:2017-09-06 18:30:03

标签: http go connection

我正在尝试测量网址的连续加载时间,但无法删除http连接并从每次测量开始。有了这段代码......

func getloadtime (url string) float64 {

    // setup client
    tr := &http.Transport{
        DisableKeepAlives: true}
    client := &http.Client{Transport:tr}

    // page load and measure
    start := time.Now()
    _, _ = client.Get(url)

    return(time.Since(start).Seconds())
}

func main () {
    for i := 0; i < 5; i++ {
        fmt.Println(getloadtime("http://www.google.com"))
    }
}

我得到这样的测量结果:

2.75
0.13
0.09
0.12
0.115

因此,似乎从初始加载维护http连接,因为后续加载要快得多。我也尝试在标题中将“连接”设置为“关闭”,但得到相同的结果:

req, err := http.NewRequest("GET", url, nil)
req.Header.Set("Connection", "close")
_, _ := client.Do(req)

我做错了什么?

1 个答案:

答案 0 :(得分:-1)

我认为您需要将GET的响应分配给变量,然后使用response.Body.Close()

关闭连接
func getloadtime (url string) float64 {

    // setup client
    tr := &http.Transport{
        DisableKeepAlives: true}
    client := &http.Client{Transport:tr}

    // page load and measure
    start := time.Now()
    response, _ := client.Get(url)
    response.Body.Close()

    return(time.Since(start).Seconds())
}