2

我已经使用 java.net 库制作了一个应用程序来捕获网页打开所花费的时间..示例代码

 HttpURLConnection conn = (HttpURLConnection)url.openConnection();
 for(int i=0; i<20; i++ )
  {
   conn.disconnect();
   conn.connect();
   long starTime = System.currentTimeMillis();
   JEditorPane editorPane = new JEditorPane();
   editorPane.setPage(new URL());
   long elasedTime = System.currentTimeMillis() - starTime;
   System.out.println(elasedTime);
  }

但我面临一个问题,缓存!如果我反复打开网页,那么在某些情况下它会显示 time=0 mills ......这当然是不可能的,请任何人帮助我!

4

4 回答 4

2

setUseCaches(),继承自URLConnection,应该提供所需的内容:

公共无效 setUseCaches(布尔使用缓存)

将此 URLConnection 的 useCaches 字段的值设置为
指定的值。

一些协议会缓存文档。有时候,重要的是
能够“通过”并忽略缓存(例如,“重新加载”按钮
浏览器)。如果连接上的 UseCaches 标志为真,则连接为
允许使用它可以使用的任何缓存。如果为 false,缓存将被忽略。
默认值来自DefaultUseCaches,默认为true。

它必须在connect().

于 2012-05-16T07:21:22.023 回答
1

rahul ,您的程序中有一个巨大的错误。您的程序没有给出预期的结果,因为您没有正确编写它,特别是您的程序根本没有测量网页打开所花费的时间。

试试这个代码-->

HttpURLConnection conn = (HttpURLConnection)url.openConnection();
 for(int i=0; i<20; i++ )
  {
   long starTime = System.currentTimeMillis();       
   conn.connect();

   JEditorPane editorPane = new JEditorPane();
   editorPane.setPage(new URL());

   long elasedTime = System.currentTimeMillis() - starTime;
   System.out.println(elasedTime);

   conn.disconnect();
  }

奇怪,没有人能注意到你程序中的错误。

于 2012-05-16T08:07:41.500 回答
1

您可以通过设置选择不使用任何现有缓存conn.setUseCaches(false)。这可能会提高计算的准确性。

于 2012-05-16T07:21:06.033 回答
0

URLConnection您可以在(或HttpURLConnection)中禁用缓存。

于 2012-05-16T07:21:01.357 回答