请求开始记录个开始时间,结束的时候给减掉下?
Golang 1.7 加了个http-tracing的功能,看这个官方博客介绍https://blog.golang.org/http-tracing
package main import "crypto/tls" import "fmt" import "time" import "net/http" import "net/http/httptrace" import "log" func main() { timeGet("http://www.baidu.com") } func timeGet(url string) { req, _ := http.NewRequest("GET", url, nil) var start, connect, dns, tlsHandshake time.Time trace := &httptrace.ClientTrace{ DNSStart: func(dsi httptrace.DNSStartInfo) { dns = time.Now() }, DNSDone: func(ddi httptrace.DNSDoneInfo) { fmt.Printf("DNS Done: %v\n", time.Since(dns)) }, TLSHandshakeStart: func() { tlsHandshake = time.Now() }, TLSHandshakeDone: func(cs tls.ConnectionState, err error) { fmt.Printf("TLS Handshake: %v\n", time.Since(tlsHandshake)) }, ConnectStart: func(network, addr string) { connect = time.Now() }, ConnectDone: func(network, addr string, err error) { fmt.Printf("Connect time: %v\n", time.Since(connect)) }, GotFirstResponseByte: func() { fmt.Printf("Time from start to first byte: %v\n", time.Since(start)) }, } req = req.WithContext(httptrace.WithClientTrace(req.Context(), trace)) start = time.Now() if _, err := http.DefaultTransport.RoundTrip(req); err != nil { log.Fatal(err) } fmt.Printf("Total time: %v\n", time.Since(start)) }
DNS Done: 10.402422ms Connect time: 4.336225ms Time from start to first byte: 24.287813ms Total time: 24.752966ms
天赋社区 高知社区。
www.tianfu.im天赋社区
请求开始记录个开始时间,结束的时候给减掉下?
Golang 1.7 加了个http-tracing的功能,看这个官方博客介绍https://blog.golang.org/http-tracing