我正在尝试获取价值TTFB和连接价值
c := exec.Command(
"curl", "-w",
"Connect: %{time_connect} TTFB: %{time_starttransfer} Total time: %{time_total}",
"-o",
"/dev/null",
"http://my.domain/favicon.ico")
cID, err := c.Run()
fmt.Printf("%s", cID)
它会像
Connect: 0.205 TTFB: 0.353 Total time: 0.354
但是,我只需要TTFB , Connect, Total time
golang变量中value的值。
另外,有什么方法可以在不专门使用curl的情况下获取值?
自Go 1.7起就有对此的内置支持。Go
1.7添加了HTTP跟踪,请阅读博客文章:HTTP跟踪简介
您可以指定在发出HTTP(S)请求时在适当的阶段/点调用的回调函数。您可以通过创建值来指定回调函数httptrace.ClientTrace
,然后使用来“武装”它httptrace.WithClientTrace()
。
这是一个示例函数,该函数获取URL参数,并打印获取它的时间:
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))
}
调用它的示例:
timeGet("https://google.com")
输出示例:
DNS Done: 7.998465ms
Connect time: 12.677085ms
TLS Handshake: 128.65394ms
Time from start to first byte: 176.461087ms
Total time: 176.723402ms
另外,请务必查看github.com/davecheney/httpstat,它为您提供了一个CLI实用程序,该实用程序也可以在后台使用该httptracing
软件包。
从六月份左右开始,我们在整个站点上经历了奇怪的第一个字节的时间滞后行为。在使用这个站点时,问题是显而易见的(有时应用程序在10-20秒内没有响应),它也存在于通过webpagetest.org进行的瀑布分析中。我们总部设在丹麦,但从任何主持人那里得到这个结果。 为了确认问题,我们执行了一个基准测试,向一个简单页面发送300个相同的请求,并测量响应时间。如果我们向首页发送300个请求,中值响应时间在
问题内容: 如何从Python列表中的第一个字符串中获取第一个字符? 看来我可以使用,但不会给我第一个字符。 问题答案: 你几乎是对的。最简单的方法是 但 也可以。 你想 结束 的第一个字符(字符零)后,未 启动 的第一个字符(字符零),这是以后有什么在你的问题的手段的代码。
我想知道一张linkedhashmap的名字,但只知道最后一张。 这是我的hashmap,我只打印出姓氏。我如何得到第一个?有没有办法把它链接到密钥上。例如,“gumt”打印出Gumtäktsuni.bibliotek? 输出: 我也有一个生效的节点类。节点类:
问题内容: 我正在和熊猫打架,现在我正在失去。我有与此类似的源表: 我想从列“ First”中的值的第一位开始向该数据帧添加新列:a)从列“ First”中的字符串更改为数字b)从新创建的字符串中提取第一个字符c)来自b的结果另存为新的数据框中的列 我不知道如何将其应用于熊猫数据框对象。我将非常感谢您的帮助。 问题答案: 铸山坳来,你可以进行矢量化切片呼吁: 如果需要,可以再次调用列
问题内容: 我正在尝试使程序执行以下操作: 假设我们有一个被设置为的被叫。我想输出给用户,每个单词的第一个字符。我尝试使用该方法,但是没有成功。 我的代码: 我试图检测是否有空格,那么我可以简单地获取下一个索引。谁能告诉我我在做什么错? 问题答案: 尝试按(空格)分割,然后获取每个单词的(第一个字符)并按如下方式打印:
问题内容: 我试图从所有内容都在一个列中的地址中提取状态,这是一个示例: 我一直在尝试找出如何使用和一起做,但是我似乎无法掌握。这是我到目前为止的内容: 我以为它会从第二个逗号开始,到第三个逗号结束,并且让我的所有内容介于两者之间,但事实并非如此。 任何帮助表示赞赏。 问题答案: 一般来说, 例子: