如何使用HTTPURLConnection在Java中获取TTFB(Time To First Byte)

时间:2014-02-20 16:19:25

标签: java performance httpurlconnection measures

我们正在开发一种工具,以非侵入性的方式衡量网站的性能(不修改网站源代码)。我们在Java中有一个小应用程序,它通过互联网向我们的客户网站发出请求,并保存ResponseCode,LoadTime,加载的字节数等等。

我们衡量的主要指标之一是TTFB。我想知道我们是否采取了正确的方式。

我们进行HttpURLConnection并将两个时间戳的差异保存为TTFB,如下所示。

Calendar before = Calendar.getInstance();

HttpURLConnection connection = (HttpURLConnection)new URL( url ).openConnection();
connection.getResponseCode();

Calendar end = Calendar.getInstance();

//read the content

Calendar endContent = Calendar.GetInstance();

long TTFB = end.getTimeInMillis() - before().getTimeInMillis();
long justLoadTime = endContent.getTimeInMillis() - end.getTimeInMillis();

这是对的吗? 获得时间直到ResponseCode是TTFB? 或者直到某些字节的内容已经到达?

有更简单的方法来获取这些信息吗?

在极少数情况下,TTFB和justLoadTime之间的差异非常小,在重量级页面中。

1 个答案:

答案 0 :(得分:0)

我不确定您是否可以通过Http Url连接获得准确的测量结果。这听起来要低得多,你可能需要套接字编程。到达的第一个字节将是单个TCP数据包。在HTTP级别运行,您可能已经收到多个数据包。因此,可以澄清“第一个字节”对您的指标的意义。