7

我在 android 中使用 Volley 库。我在浏览器中运行相同的 url,它会在不到一秒的时间内返回。我想知道,如何优化 Volley?不清楚 Cache Queue Take 代表什么以及为什么是 3.6 秒。或者为什么要为 6.8 秒的响应时间添加缓存队列占用和网络完成?我应该如何为不使用ETags的服务优化 volley 。还有什么是BasicNetwork.logSlowRequests

    07-26 09:52:31.395: D/Volley(5651): [4378] BasicNetwork.logSlowRequests: HTTP response   for request=<[ ]   http://theurl.com/path 0xd6183ced NORMAL 6> [lifetime=3172], [size=940], [rc=200],     [retryCount=0]
    07-26 09:52:31.400: D/Volley(5651): [4377] BasicNetwork.logSlowRequests: HTTP response for request=<[ ]   http://theurl.com/path 0xd6183ced NORMAL 5> [lifetime=3182], [size=940], [rc=200], [retryCount=0]
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (6848 ms) [ ]   http://theurl.com/path 0xd6183ced NORMAL 6
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
    07-26 09:52:31.445: D/Volley(5651): [1] MarkerLog.finish: (+3622) [4376] cache-queue-take
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+6   ) [4376] cache-hit-expired
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4378] network-queue-take
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+3173) [4378] network-http-complete
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+36  ) [4378] network-parse-complete
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+11  ) [4378] network-cache-written
    07-26 09:52:31.450: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4378] post-response
    07-26 09:52:31.455: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] done
    07-26 09:52:31.455: D/
    07-26 09:52:31.525: D/Volley(5651): [1] MarkerLog.finish: (6998 ms) [ ]   http://myurl  0xd6183ced NORMAL 5
    07-26 09:52:31.525: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [ 1] add-to-queue
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+3683) [4376] cache-queue-take
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+7   ) [4376] cache-hit-expired
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+1   ) [4377] network-queue-take
    07-26 09:52:31.530: D/Volley(5651): [1] MarkerLog.finish: (+3184) [4377] network-http-complete
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+39  ) [4377] network-parse-complete
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+21  ) [4377] network-cache-written
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+0   ) [4377] post-response
    07-26 09:52:31.535: D/Volley(5651): [1] MarkerLog.finish: (+63  ) [ 1] done
4

3 回答 3

5

我刚刚在这里回答了这个问题:How to optimize network-queue-take in android Volley? (凌空谷歌 IO 2013)

logSlowRequests 只记录缓慢的请求(超过 3000 毫秒),没有更复杂的。network-http-complete 是下载请求并将其传递给解析器所需的时间。

于 2013-08-16T08:42:08.953 回答
1

尝试使用此增强型截击

该项目基于 Google 自己创建的 Volley Networking Toolkit for Android。该工具包本身非常棒且可扩展,但它缺少一些功能。该项目旨在将这些功能添加到 Volley 工具包中,使其成为更完整的 HTTP 解决方案。

您还可以自定义使用 Java NIO(新 IO)的库来改善回调/响应时间。使用 Socket.IO

有些人还尝试将 volley 与 OKHTTP 一起使用

感谢维奈先生

于 2013-08-23T04:04:12.817 回答
0

我有类似的情况。我没有像您一样注意到时间延迟,但它显示在浏览器中而不是我的应用程序中。从本质上讲,清除缓存帮助了我。

您可以通过以下方式清除缓存:

Requestqueue.getcache().clear();

如果要禁用jsonrequests 的缓存,可以通过以下方式进行:

jsonrequest.setshouldcache(false)

这解决了我的缓存问题。

于 2020-06-10T02:59:41.100 回答