2015-06-16 32 views
11

Mam problem z moją niestandardową przeglądarką internetową. Używam WKWebView. Mam karty w mojej aplikacji. Jeśli kliknę zakładkę, ładuje się NSURLRequest w WKWebView. Muszę zaimplementować pamięć podręczną. Jeśli użytkownik naciśnie kartę, wolałbym załadować dane z pamięci podręcznej zamiast nowe. Niestety ten kod nie działa:Pamięć podręczna dla WKWebView

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

Czy możesz mi doradzić, jak zaimplementować pamięć podręczną dla WKWebView?

Odpowiedz

6

Jeśli użyłeś NSURLRequestUseProtocolCachePolicy, który jest domyślny, nie powinno być nic więcej, co musisz zrobić. Ta zasada automatycznie przyjrzy się odpowiedzi z serwera, aby zdecydować, czy rzeczywiście należy przejść i ponownie pobrać dane.

Jeśli serwer korzysta z nagłówków HTTP Cache-Control i ustawia maksymalny wiek dla swoich odpowiedzi, NSURLSession będzie je szanować i zwracać buforowane odpowiedzi przed ich wygaśnięciem.

3

Zazwyczaj ładuję się z serwera, jeśli mam połączenie z Internetem. W przeciwnym razie ładuję z pamięci podręcznej.

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

To nie działa dla WKWebView, jak wspomniano tutaj, https://forums.developer.apple.com/thread/53573. – guoc

+0

@guoc - Próbowałem tego sam przed rokiem i działało dobrze w wkwebview –

Powiązane problemy