2013-06-07 16 views
6

同じURLに2つのHTTPリクエストを作成すると、1つはHttpClientのみで、もう1つはVolleyを使用すると、Volleyリクエストにはかなりの時間がかかります。Volley:HTTP要求が遅い

例えば、私のテスト環境で:

  • は直接およそ250ミリ秒
  • について750msここ

だgoogle.com平均値を要求するためにバレーボールを使ってgoogle.com平均値を要求するためのHttpClientを使用してサンプルのVolleyリクエストのログダンプ:

11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (773 ms) [ ] http://google.com 0xa46e044c NORMAL 1 
11:44:14.766: D/Volley(863): [1] MarkerLog.finish: (+0 ) [ 1] add-to-queue 
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+0 ) [93] cache-queue-take 
11:44:14.786: D/Volley(863): [1] MarkerLog.finish: (+7 ) [93] cache-hit-expired 
11:44:14.796: D/Volley(863): [1] MarkerLog.finish: (+1 ) [97] network-queue-take 
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+722) [97] network-http-complete 
11:44:14.806: D/Volley(863): [1] MarkerLog.finish: (+20 ) [97] network-parse-complete 
11:44:14.816: D/Volley(863): [1] MarkerLog.finish: (+16 ) [97] network-cache-written 
11:44:14.826: D/Volley(863): [1] MarkerLog.finish: (+0 ) [97] post-response 
11:44:14.836: D/Volley(863): [1] MarkerLog.finish: (+7 ) [ 1] done 

可能な限りボトルネックは実際のHTTPリクエストにあります。なぜそれはずっと遅いのですか?

答えて

1

Volleyがあなたの応答をキャッシュしているように見えます。 HttpClientを直接使用すると、何もキャッシュされません。

+4

確実にキャッシングすると、Volleyの速度が低下することはありません。 – Intrications

+1

初めての方が遅いです。次の再試行では、別のhttpトランザクションを開始するのではなく、キャッシュからの応答を使用します。 –

+3

Volleyログでは、キャッシュレスポンスが再利用されていないことを示しています(キャッシュヒット期限切れ)、これを確認するのに約7msかかります。しかし、実際のhttp要求は722msかかる。キャッシュの書き込みには16msかかります。だから私はキャッシュが問題だとは思わない。 – Intrications

関連する問題