有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

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

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