17

मैंने एक विशिष्ट फ़ोल्डर (../../ अनुप्रयोग समर्थन/ऑफ़लाइन पर NSURLCache सेट किया है, इसलिए इसे ओएस द्वारा यादृच्छिक रूप से हटाया नहीं जाएगा), फिर मैं NSURLRequestReturnCacheDataElseLoad नीति के साथ एक NSURLRequest भेजता हूं।कैसे पता चलेगा कि NSRLResponse कैश से आता है या नहीं?

मैं कैसे बता सकता हूं कि NSURLConnectionDelegate के अनुरूप कक्षा द्वारा संभाली गई प्रतिक्रिया कैश या नेट से आता है?

उत्तर

6

अच्छा लेख यहां समस्या के बारे में:

http://andrewmarinov.com/ioss-corenetwork-lying/

असल में, NSHTTPURLResponse से स्थिति कोड हमेशा होता है 200

तो अगर आप वास्तव में पता करने की जरूरत है, तो आप जाँच कर सकते हैं आइटम में है कैश इससे पहले कि आप अनुरोध करना

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:request]; 
NSHTTPURLResponse *httpCacheResponse = (NSHTTPURLResponse *)cachedResponse.response; 

तो संशोधित 'ETag' या 'संशोधित की तारीख' शीर्षक सहेजते हैं

NSString* etag = httpCacheResponse.allHeaderFields[@"etag"]; 

फिर, प्रतिक्रिया हैंडलर में एटैग या संशोधित दिनांक समान है। यदि हां, तो प्रतिक्रिया कैश से थी!

+0

मूल रूप से मैं – greg3z

+2

कर रहा हूं, तो आप हमेशा अपने प्रश्न का उत्तर दे सकते हैं! मुझे मेरे जीवन का एक घंटा बचाया होगा ;-) –

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

  • कोई संबंधित समस्या नहीं^_^