2013-06-07 15 views
6

Wenn ich zwei HTTP-Anfragen an die gleiche URL, eine mit nur HttpClient und die andere mit Volley, die Volley Anfragen dauert viel länger.Volley: http Anfragen langsam

Zum Beispiel in meiner Testumgebung:

  • mit Httpclient direkt google.com mittelt verlangen etwa 250ms
  • Volley mit google.com mittelt anfordern 750ms über

hier ein Log Dump einer Probe Volley Anfrage:

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 

wie Sie können sehen Sie, der Flaschenhals ist in der tatsächlichen HTTP-Anfrage. Warum ist es so viel langsamer?

Antwort

1

Sieht aus wie Volley Ihre Antwort zwischenspeichert. Wenn Sie HttpClient direkt verwenden, wird nichts zwischengespeichert.

+4

Sicherlich Caching sollte Volley schneller nicht langsamer machen. – Intrications

+1

Es ist nur zum ersten Mal langsamer. Bei den nächsten Versuchen wird die Antwort vom Cache verwendet, anstatt eine weitere HTTP-Transaktion zu initiieren. –

+3

Im Volley-Protokoll zeigt es, dass die Cache-Antwort nicht wiederverwendet wird (Cache-Hit-abgelaufen) und es dauert nur ca. 7ms, um dies zu überprüfen. Aber die tatsächliche HTTP-Anfrage dauert 722ms. Das Schreiben des Caches dauert 16ms. Ich denke also nicht, dass Caching das Problem ist. – Intrications