2013-06-07 14 views
6

यदि मैं एक ही यूआरएल पर दो HTTP अनुरोध करता हूं, तो केवल एक एचटीपी क्लाइंट और वॉली के साथ दूसरा, वॉली अनुरोधों में अधिक समय लगता है।वॉली: http अनुरोध धीमा

उदाहरण के लिए, अपने परीक्षण वातावरण में:

  • HttpClient का उपयोग कर के बारे में सीधे 250ms
  • वॉली का उपयोग कर के बारे में 750ms
यहाँ

एक है google.com अनुरोध करने के लिए औसत google.com औसत अनुरोध करने के लिए नमूना के लॉग डंप वॉली अनुरोध:

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

ऐसा लगता है जैसे वॉली आपकी प्रतिक्रिया को कैश कर रहा है। HttpClient का उपयोग सीधे कुछ भी कैश नहीं करता है।

+4

निश्चित रूप से कैशिंग को वॉली को धीमा नहीं करना चाहिए। – Intrications

+1

यह केवल पहली बार धीमा है। अगली बार फिर से यह एक और http लेनदेन शुरू करने के बजाय कैश से प्रतिक्रिया का उपयोग करेगा। –

+3

वॉली लॉग में, यह दिखाता है कि कैश प्रतिक्रिया का पुन: उपयोग नहीं किया जा रहा है (कैश-हिट-समाप्त हो गया) और इसे जांचने में केवल 7ms लगते हैं। लेकिन वास्तविक http अनुरोध 722ms लेता है। कैश लिखना 16 एमएमएस लेता है। तो मुझे नहीं लगता कि कैशिंग समस्या है। – Intrications