html Java openStream()的工作时间取决于网站代码?
我今天做了一个测试,结果很奇怪。我使用下面的代码测试了一些网页
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())的不同站点的时间:
地址|时间|代码行
雅虎。com/1000 943
英国广播公司。com 230 1500
消息谷歌。pl/138 384
免费电子书。净收入776668
可湿性粉剂。pl 3066 2811
关键是时间是不同的,看起来它取决于站点代码的长度。我的问题: 不要使用url。openStream()下载整个站点代码?它不应该只是打开流并等待用户读取它
# 1 楼答案
openStream
至少等待直到服务器开始发送响应。否则,它无法知道它是否可以返回一个InputStream
,或者应该抛出一个异常在许多web服务器上,实际发送数据的时间是最短的:当web服务器决定发送哪些标头(从而开始发送响应)时,它已经知道了全部内容