如何更快地从URL读取普通的html文件?

时间:2012-12-24 16:38:44

标签: java html performance file http

我需要“阅读”许多具有略微不同URL的链接以进行进一步解析。 使用此代码:

    String charset = "UTF-8";
    System.setProperty("java.net.useSystemProxies", "false");
    //System.out.println(http);
    //System.out.println(html);
    URL pageToRead = new URL(http);

    URLConnection yc = pageToRead.openConnection();
    yc.setRequestProperty("Accept-Charset", charset);
    BufferedReader in = new BufferedReader(new InputStreamReader(
            yc.getInputStream()));

    String inputLine;
    FileWriter fstream = new FileWriter(html);
    BufferedWriter out = new BufferedWriter(fstream);

    while ((inputLine = in.readLine()) != null) {
        out.write(inputLine);
    }


    in.close();
    out.close();

注意变量:http是带有完整URL的String。 html是具有完整文件名的String。

两个问题:

  1. 如何更改此代码以更快地读取网址?
  2. 也许我错了,问题出在http服务器上。也许它只是不能给我更快的页面。如何检查?

2 个答案:

答案 0 :(得分:0)

您可以为代码计时并通过执行以下操作找出每个方法执行的时间:

long startTime = System.nanoTime();
methodToTime();
long endTime = System.nanoTime();

long duration = endTime - startTime;

然后将它打印出来。

来源:How do I time a method's execution in Java?

答案 1 :(得分:0)

你通常有一些高延迟读取HTML(代理等)。然而,一个体面的网络服务器可以同时处理大量请求。

为了获得更多吞吐量,您应该执行多个http读取并发(使用线程池)。

根据所使用的服务器,您的吞吐量会增加10..20倍(也取决于您的客户端操作系统的连接数量不受限制)。