2

私は、java.net ライブラリを使用して、Web ページを開くのにかかる時間をキャプチャするアプリケーションを作成しました。コード例

 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);
  }

しかし、私は問題に直面しています、キャッシュ!! Webページを繰り返し開くと、場合によっては time=0 mills と表示されます...これは確かに不可能です。誰か助けてください!!

4

4 に答える 4

2

setUseCaches()から継承されURLConnection、必要なものを提供する必要があります。

public void setUseCaches(boolean usecaches)

このURLConnectionのuseCachesフィールドの値をに設定します
指定された値。

一部のプロトコルは、ドキュメントのキャッシュを行います。時折、
キャッシュを「トンネリング」して無視することができます(たとえば、の「リロード」ボタン
ブラウザ)。接続のUseCachesフラグがtrueの場合、接続は
可能な限りのキャッシュを使用できます。falseの場合、キャッシュは無視されます。
デフォルト値はDefaultUseCachesから取得され、デフォルトはtrueです。

の前に呼び出す必要がありますconnect()

于 2012-05-16T07:21:22.023 に答える
1

を設定することにより、既存のキャッシュを使用しないことを選択できます。これによりconn.setUseCaches(false)、計算の精度が向上する可能性があります。

于 2012-05-16T07:21:06.033 に答える
1

rahul さん、あなたのプログラムには大きな誤りがあります。あなたのプログラムは適切に書かれていないため、期待した結果を出していません。具体的には、あなたのプログラムは Web ページが開くのにかかる時間をまったく測定していません。

このコードを試してください -->

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 に答える
0

URLConnection(または)でキャッシュを無効にすることができますHttpURLConnection

見る

于 2012-05-16T07:21:01.357 に答える