当使用导航计时 api 测量第一个字节的时间时,其中哪个是准确的测量?为什么?
var timing = performance.timing;
var timeToFirstByte = timing.responseStart - timing.fetchStart
或者
var timeToFirstByte_a = timing.responseStart - timing.navigationStart
当使用导航计时 api 测量第一个字节的时间时,其中哪个是准确的测量?为什么?
var timing = performance.timing;
var timeToFirstByte = timing.responseStart - timing.fetchStart
或者
var timeToFirstByte_a = timing.responseStart - timing.navigationStart
这实际上取决于您要测量的内容。
如果您从 navigationStart 开始,您将测量浏览器卸载先前内容、设置新选项卡以及(如果页面是通过重定向加载)完成重定向的时间。这将添加到设置与服务器的新连接以及服务器响应和接收第一个字节的时间。
如果您执行 fetchStart,您将只是测量从请求发送到服务器到收到第一个字节的时间。这将包括 tcp 和 ssl 协商。
如果您想从建立连接后到收到的第一个字节,您可能需要responseStart - requestStart
. 这不包括浏览器设置、重定向或 tcp 和 ssl 协商。