什么构成了 TTFB(首字节时间)计算,以及如何查看各个组件的时序?

What makes up the TTFB (Time-To-First-Byte) calculation, and how to see individual component timings?

我在 chrome 开发工具中看到针对网络请求的高 Time-To-First-Byte 数字。我想改进它,但我不确定请求过程的哪一部分导致速度慢。

一些消息来源将此测量值引用为 "DNS, SSL, Connect, Send, Receive, Wait"。 TTFB的权威定义是什么,如何准确测量它的各个部分?

使用 Wireshark 作为分析工具获取请求的详细信息。

  • 关闭所有浏览器windows
  • 启动 wireshark 并设置以在您的网卡上捕获,无论是有线还是无线。
  • 在 Bash 控制台上,准备使用 w3m

    等文本浏览器访问 https://www.eff.org/

    w3m https://www.eff.org/

  • 开始抓包

  • 在控制台上按回车键,页面加载完成后,停止捕获数据包。
  • wireshark 上应用此过滤器以获取重要事件

    dns || ssl.handshake.type == 1 || ssl.handshake.type == 14 || ssl.handshake.type == 4 || ssl.record.content_type == 22 || ssl.record.content_type == 23

结果:

分析

DNS : 数据包 6
的时间 TCP 握手 : packate 10 和 6 的区别
TLSv1.2 握手:数据包 23 和 10 之间的区别
发送 : packet 23 和 24 的区别(?不确定)
TTFB : 数据包 27 的时间

浏览器认为的等待时间是请求在请求队列中等待的时间。

参考文献:

http://www.thevisiblenetwork.com/2015/01/21/calculate-http-response-time-in-wireshark/ http://blog.catchpoint.com/2017/05/12/dissecting-tls-using-wireshark/