Java openStream()的工作时间取决于网站代码?

时间:2011-10-11 12:42:30

标签: java html time

我今天做了一个测试,结果很奇怪。我使用下面的代码测试一些网页。

long start = System.nanoTime();
URL url = new URL("http://wp.pl");
System.out.println("" + (System.nanoTime() - start) / 1000000);
start = System.nanoTime();
InputStream is = url.openStream();
System.out.println("" + (System.nanoTime() - start) / 1000000);

start = System.nanoTime();
InputStreamReader isr = new InputStreamReader(is, "UTF-8");
System.out.println("" + (System.nanoTime() - start) / 1000000);

start = System.nanoTime();
BufferedReader in = new BufferedReader(isr);
System.out.println("" + (System.nanoTime() - start) / 1000000);
//After this point reading whole site goes nice and fast 

只有第二次不同(其余的是0周围)。以下是(url.openStream())的不同站点的时间:

地址|时间|代码行
yahoo.com/ 1000 943
bbc.com 230 1500
news.google.pl/ 138 384
free-ebooks.net 776 668
wp.​​pl 3066 2811

关键是时间不同,它的外观取决于网站代码的长度。我的问题: url.openStream()下载整个站点代码吗?它不应该只是打开流并等待用户阅读它?

1 个答案:

答案 0 :(得分:1)

openStream等待至少,直到服务器开始发送响应。否则它无法知道它是否可以实际返回InputStream或者应该抛出异常。

在许多网络服务器上,实际发送的数据是最短的时间:当Web服务器决定发送哪些标头(从而开始发送响应)时,它已经知道完整的内容。