使用javascript访问第一个字节的时间

Time to first byte with javascript?

本文关键字:时间 字节 第一个 javascript 访问 使用      更新时间:2023-09-26

有没有任何现代浏览器可以通过javascript在http请求中公开第一个字节的时间(TTFB)和/或最后一个字节的长度(TTLB),而不需要使用任何插件?

我想要的是一个javascript片段,它可以访问这些值,并将它们发布回服务器,用于性能监控。

澄清:我不想找任何js定时器或开发工具。我想知道和希望的是,是否有任何浏览器可以测量加载时间并通过javascript公开这些值。

您想要的是W3C的PerformanceTiming接口。浏览器支持良好(请参阅2011年9月的调查)。正如您在回应Shadow Wizard的回答时推测的那样,这些时间被浏览器捕获,并暴露在窗口对象中的javascript中。您可以在window.performance.timing中找到它们。TTFB间隔的终点将是window.performance.timing.responseStart(定义为"用户代理从服务器、相关应用程序缓存或本地资源接收到响应的第一个字节后的时间")。起点有一些选项,这取决于您是对卸载上一个文档的时间感兴趣,还是对解析DNS的时间感感兴趣,因此您可能需要阅读文档并决定哪一个适合您的应用程序。

我担心这是不可能的。

只有在部分请求从服务器发送、浏览器接受并解析后,JavaScript才会"激活"

你问的有点像问"吃完蛋糕我能测量一下它的重量吗?"——你需要先称重,然后再吃蛋糕。

您可以在Chrome开发工具中查看响应时间。

在JS中不可能获得真正的TTFB,因为页面只有在接收到第一个字节后才能获得JS上下文。你能得到的最接近的东西如下:

<script type="text/javascript">var startTime = (new Date()).getTime()</script>

<head>标签的早期。然后,根据您是想检查html何时完成,还是所有内容都完成下载,您可以在html页面底部附近放置一个类似的标记(并减去值),然后将XHR返回到服务器(或者设置一个cookie,可以在下一个页面请求中检索服务器端),或者收听onload事件,然后执行同样的操作。