我正在尝试测量网址的连续加载时间,但无法删除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)
我做错了什么?
答案 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())
}