2015-06-16 16 views
11

के लिए कैश मुझे अपने कस्टम इंटरनेट ब्राउज़र में परेशानी हो रही है। मैं WKWebView का उपयोग कर रहा हूँ। मेरे पास मेरे ऐप में टैब हैं। यदि मैं WKWebView में एक नए नए NSURLRequest लोड पर क्लिक करता हूं। मुझे एक कैश लागू करने की जरूरत है। यदि कोई उपयोगकर्ता किसी टैब पर दबाता है, तो मैं नए के बजाय कैश डेटा लोड करना पसंद करूंगा। दुर्भाग्य से इस कोड काम नहीं करता:WKWebView

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:0.0]; 
[self.webView loadRequest:request]; 

तुम मुझे कैसे WKWebView के लिए कैश को लागू करने पर मार्गदर्शन कर सकते हैं?

उत्तर

6

यदि आपने NSURLRequestUseProtocolCachePolicy का उपयोग किया है, जो डिफ़ॉल्ट है, तो आपको और कुछ भी करने की ज़रूरत नहीं है। यह नीति स्वचालित रूप से यह तय करने के लिए सर्वर से प्रतिक्रिया को देखेगी कि वास्तव में यह जाना चाहिए या फिर डेटा को पकड़ना चाहिए।

यदि सर्वर कैश-कंट्रोल HTTP शीर्षलेख का उपयोग करता है और इसकी प्रतिक्रिया के लिए अधिकतम आयु सेट करता है, तो NSURL सत्र इसका सम्मान करेगा और कैश प्रतिक्रियाओं को समाप्त होने से पहले वापस कर देगा।

3

यदि मेरे पास इंटरनेट कनेक्टिविटी है तो मैं आम तौर पर सर्वर से लोड करूंगा। अन्यथा, मैं कैश से लोड करता हूँ।

if reachability.isReachable { 
      urlRequestCache=NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.UseProtocolCachePolicy, timeoutInterval: 10) 
     } 
     else { 
      urlRequestCache = NSURLRequest(URL: url!, cachePolicy: NSURLRequestCachePolicy.ReturnCacheDataElseLoad, timeoutInterval: 60) 
     } 
     theWebView.loadRequest(urlRequestCache) 
+0

यह यहाँ, https://forums.developer.apple.com/thread/53573 उल्लेख किया, WKWebView के लिए काम नहीं करता। – guoc

+0

@guoc - मैंने इसे साल पहले खुद से आजमाया है और यह wkwebview में ठीक काम कर रहा था –

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