2012-02-27 22 views
5

मुझे रेस्टकिट फ्रेमवर्क में कैशिंग अक्षम करने का प्रयास करने में वास्तव में कठिन समय है। मैंने कैश नीति को किसी भी प्रभाव के साथ रखने की कोशिश नहीं की है, बिल्कुल कोई प्रभाव नहीं। ऐसा करने का सही तरीका क्या है?Restkit, कैशिंग अक्षम करें

उत्तर

7

तो एक बार आप एक ग्राहक मिल गया है, या तो स्पष्ट रूप से इसे आरंभ:

RKClient *client = [RKClient clientWithBaseURL:url]; 

या वस्तु प्रबंधक की अनुमति से यह कार्य करें:

RKObjectManager* om = [RKObjectManager managerWithBaseURLString:url]; 
RKClient *client = om.client; 

यह सिर्फ स्थापित करने का एक सरल बात होना चाहिए कैश नीति:

client.cachePolicy = RKRequestCachePolicyNone; 

क्या आप यही कर रहे थे?

अद्यतन: लॉगिंग संदेश के बाद से चिंता मैं इसके स्रोत को ट्रैक करने का फैसला किया है केवल एक चीज है। Tl; dr संस्करण संदेश को अनदेखा करना और भरोसा करना है कि लॉगिंग प्रॉक्सी आपको क्या बता रहा है।

दो बार जांचने के लिए मैंने "पथ पर अमान्य कैश" की खोज की और इसे दो स्थानों में RKCache invalidateSubDirectory: और RKCache invalidateAll में पाया और उन पर ब्रेक पॉइंट सेट किया। यहाँ मेरी कोड में से कुछ से एक आंशिक स्टैक ट्रेस है:

#0 0x000e6c66 in -[RKCache invalidateSubDirectory:] at RestKit/Code/Support/RKCache.m:189 
#1 0x0006b767 in -[RKRequestCache invalidateWithStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:237 
#2 0x0006b958 in -[RKRequestCache setStoragePolicy:] at RestKit/Code/Network/RKRequestCache.m:253 
#3 0x00069abf in -[RKRequestCache initWithPath:storagePolicy:] at RestKit/Code/Network/RKRequestCache.m:60 
#4 0x000586f3 in -[RKClient baseURLDidChange:] at RestKit/Code/Network/RKClient.m:339 
#5 0x000589ce in -[RKClient observeValueForKeyPath:ofObject:change:context:] at RestKit/Code/Network/RKClient.m:373 
#6 0x0183cd91 in NSKeyValueNotifyObserver() 
#7 0x0183c895 in NSKeyValueDidChange() 
#8 0x0182233e in -[NSObject(NSKeyValueObserverNotification) didChangeValueForKey:]() 
#9 0x01844a82 in _NSSetObjectValueAndNotify() 
#10 0x00057404 in -[RKClient initWithBaseURL:] at RestKit/Code/Network/RKClient.m:176 
#11 0x00056df3 in +[RKClient clientWithBaseURL:] at RestKit/Code/Network/RKClient.m:130 

क्या मैं इस के माध्यम से देख सीखा दो enums कि कैशिंग को नियंत्रित देखते हैं कि है:

  • RKRequestCachePolicy है जो आप क्लाइंट पर निर्धारित करते हैं, जब कैश से परामर्श किया जाता है तो यह नियंत्रित होता है।
  • RKRequestCacheStoragePolicy जो निर्धारित करता है कि डिवाइस पर परिणाम कितने समय तक संग्रहीत किए जाते हैं (कभी नहीं, सत्र की अवधि, स्थायी)।

ग्राहक की स्थापना, जब किसी URL ग्राहक सेट किया गया है के भाग के रूप RKRequestCacheStoragePolicyPermanently भंडारण नीति की स्थापना के साथ एक नया कैश बनाता है पिछले सत्र कैश बाहर समाशोधन शामिल है और अगर कैशिंग विकलांग स्थायी कैश है। यह समाशोधन है कि आप लॉगिंग संदेशों में देख रहे हैं।

+0

आपके उत्तर के लिए धन्यवाद। मैंने अभी कोशिश की है, और अभी भी "restkit.support:RKCache.m:178 पथ पर अमान्य कैश संदेश मिला है:" –

+0

क्या यह एकमात्र चीज है जो इसे कैशिंग का सुझाव देती है? क्या आपने सर्वर पर क्या चल रहा है यह देखने के लिए चार्ल्स या अन्य लॉगिंग प्रॉक्सी का उपयोग करने का प्रयास किया है? – drewish

+0

मैंने प्रॉक्सी लॉगिंग करने का प्रयास किया है, कुछ भी गलत नहीं है, मुझे सर्वर के अपेक्षित डेटा प्राप्त हुए हैं। वास्तव में, ऐप के व्यवहार में कुछ भी गलत नहीं होता है, मेरे डेटा अच्छे हैं, सबकुछ अपेक्षित है। लेकिन, मेरा लॉगर मुझे उन संदेशों को देता है "पथ पर अमान्य कैश: ...."। ऐसा लगता है कि मौजूदा फ़ाइल कैश को हटाने की कोशिश करें, लेकिन नहीं कर सकता। जैसा कि कहा गया है, मैं सिर्फ चिंतित हूं कि उन कार्यों को प्रदर्शन, या ऐप्पल सत्यापन के लिए अच्छा नहीं है। –

संबंधित मुद्दे