2015-06-16 23 views
11

Ho problemi con il mio browser Internet personalizzato. Sto usando WKWebView. Ho delle schede nella mia app. Se faccio clic su una nuova scheda NSURLRequest carica in WKWebView. Devo implementare una cache. Se un utente preme su una scheda, preferirei caricare i dati della cache anziché quelli nuovi. Purtroppo questo codice non funziona:Cache per WKWebView

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

Mi puoi guidare su come implementare cache per WKWebView?

risposta

6

Se si è utilizzato NSURLRequestUseProtocolCachePolicy, che è l'impostazione predefinita, non dovrebbe esserci nient'altro da fare. Questa politica esaminerà automaticamente la risposta dal server per decidere se debba effettivamente andare e riprendere i dati.

Se il server utilizza le intestazioni HTTP di Cache-Control e imposta l'età massima per le risposte, NSURLSession lo rispetterà e restituirà le risposte memorizzate nella cache prima che scadano.

3

In genere caricherò da un server se ho la connettività Internet. Altrimenti, carico dalla cache.

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

Questo non funziona per WKWebView, come indicato qui, https://forums.developer.apple.com/thread/53573. – guoc

+0

@guoc - L'ho provato io stesso prima dell'anno e funzionava bene in wkwebview –