मैंने प्रयोग किया है AFNetworking
दूरस्थ सर्वर से http प्रतिक्रिया प्राप्त करने के लिए। और रिमोट सर्वर 304 कोड लौटाएगा जब http अनुरोध के हेडर में "if-none-match" और "cache-control" फ़ील्ड शामिल हैं।
पर आधारित NSURLCache
वर्ग संदर्भ, यह अनुरोध कैश प्रदान किया है। लेकिन एकीकृत कैसे करें AFNetworking
तथा NSURLCache
दूरस्थ प्रतिक्रिया के साथ http प्रतिक्रिया को कैश करने के लिए दूरस्थ सर्वर के साथ RFC 2616 का कैश-कंट्रोल सेक्शन
पी.एस : मुझे मिला AFNetworking
से उद्धृत प्रतिक्रिया को कैश किया गया है https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ । तो कैश की समस्या हल हो जाती है।हालाँकि, मुझे एक और समस्या थी जब अनुरोध के परम में हमेशा कुछ मामूली अंतर (यानी हस्ताक्षर) होते हैं जो दूरस्थ सर्वर से प्रतिक्रिया को प्रभावित नहीं कर सकते हैं। इसलिए मुझे यह जानकर आश्चर्य होता है कि क्या NSURLCache NSURLRequest को अपने परम की अनदेखी कर कैश कर सकता है।
उदाहरण के लिए, इसने "http://google.com/test?param1=test&संकेत = १"। जब मैं भेजता हूँ"http://google.com/test?param1=test&संकेत = २"दूरस्थ सर्वर के लिए, दूरस्थ सर्वर उसी प्रतिक्रिया को वापस करता है जिसे मैं कैश करना चाहता हूं।
उत्तर:
जवाब के लिए 0 № 1हाँ, की तरह।
- एक विधि बनाएँ जो एक अनुरोध से आपत्तिजनक बिट्स को स्ट्रिप करती है और संशोधित अनुरोध को वापस करती है।
- लागू
URLSession:dataTask:willCacheResponse:completionHandler:
प्रतिनिधि विधि (या समतुल्य)NSURLConnection
प्रतिनिधि विधि यदि आप अपने सत्र प्रतिनिधि में "उस एपीआई का उपयोग कर रहे हैं"। - उस विधि में, स्ट्रिप विधि को कॉल करें, आइटम को स्वयं कैश करें और पूर्ण हैंडलर को शून्य प्रतिक्रिया के साथ कॉल करें।
- अनुरोध करने से पहले, स्ट्रिप विधि को कॉल करेंऔर यह देखने के लिए जांचें कि क्या वह वस्तु कैश में है। यह देखने के लिए कि क्या यह अभी भी वैध है, प्रतिक्रिया को स्वयं देखें। यदि ऐसा है, तो इसे तुरंत वापस करें। अन्यथा, अनुरोध करें।
दुर्भाग्य से, मुझे नहीं लगता कि वहाँ ऐसा करने का एक तरीका है जो उससे अधिक स्वचालित है।