排球:http请求缓慢

Kei*_*ith 6 android android-volley

如果我对同一个URL发出两个HTTP请求,一个只有HttpClient,另一个只有Volley,那么Volley请求需要更长的时间.

例如,在我的测试环境中:

  • 直接使用HttpClient请求google.com平均约250毫秒
  • 使用Volley请求google.com平均约750毫秒

这是一个示例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
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,瓶颈在于实际的HTTP请求.为什么这么慢?

Pau*_*nko 1

看起来 Volley 正在缓存您的回复。直接使用 HttpClient 不会缓存任何内容。

  • 当然,缓存应该使 Volley 更快而不是更慢。 (5认同)
  • 在 Volley 日志中,它显示缓存响应没有被重用(缓存命中过期),检查这一点只需要大约 7 毫秒。但实际的http请求需要722ms。写入缓存需要 16ms。所以我不认为缓存是问题所在。 (3认同)