是否有任何现代浏览器通过javascript在http请求中公开时间到第一个字节(TTFB)和/或时间到最后一个字节(TTLB)而不诉诸任何插件?
我想要的是一个javascript片段,它可以访问这些值并将它们发回服务器以进行性能监控。
澄清: 我不是在寻找任何js计时器或开发人员工具。我想知道并希望是否有任何浏览器可以测量加载时间并通过javascript公开这些值。
答案 0 :(得分:13)
你想要的是W3C的PerformanceTiming界面。浏览器支持很好(参见2011年9月的this survey)。就像你在回应Shadow Wizard的答案时推测的那样,这些时间被浏览器捕获并暴露在window对象中的javascript中。您可以在window.performance.timing
中找到它们。 TTFB间隔的端点将为window.performance.timing.responseStart
(定义为“用户代理从服务器或相关应用程序缓存或本地资源接收响应的第一个字节后立即的时间”)。根据您是否有时间卸载以前的文档,或者是时候解析DNS,有一些选项可供选择,因此您可能需要阅读文档并确定哪一个适合您的应用程序。
答案 1 :(得分:1)
我担心这是不可能的。
只有在>> 部分请求从服务器发送,浏览器接受并解析后,JavaScript才会变为“活动”。
你问的问题是“我可以在吃完蛋糕后测量蛋糕的重量吗?” - 你需要先减肥,然后再吃蛋糕。
答案 2 :(得分:0)
您可以在Chrome开发者工具中查看响应时间。
答案 3 :(得分:0)
在JS中获取真正的TTFB是不可能的,因为页面只在收到第一个字节后才获得JS上下文。你可以得到的最接近的东西是:
<script type="text/javascript">var startTime = (new Date()).getTime()</script>
在您的<head>
代码中很早。然后,根据您是否要检查html何时完成,或者所有内容完成下载,您可以在html页面的底部附近放置一个类似的标签(并减去值),然后将XHR放回服务器(或设置一个cookie,您可以在下一页请求中检索服务器端)或收听onload
事件,并执行相同的操作。