web-dev-qa-db-fra.com

Cache pour WKWebView

J'ai des problèmes avec mon navigateur Internet personnalisé. J'utilise WKWebView. J'ai des onglets dans mon application. Si je clique sur un nouvel onglet, NSURLRequest se charge dans WKWebView. J'ai besoin d'implémenter un cache. Si un utilisateur appuie sur un onglet, je préfère charger des données de cache au lieu de nouvelles. Malheureusement, ce code ne fonctionne pas:

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

Pouvez-vous me guider sur la façon d'implémenter le cache pour WKWebView?

14
user553536

Si vous avez utilisé NSURLRequestUseProtocolCachePolicy, qui est la valeur par défaut, vous ne devriez rien faire d'autre. Cette politique examinera automatiquement la réponse du serveur pour décider s'il doit réellement récupérer les données.

Si le serveur utilise des en-têtes HTTP Cache-Control et définit l'âge maximal pour ses réponses, NSURLSession respectera cela et renverra les réponses mises en cache avant leur expiration.

9
Dreaming In Binary

Je charge généralement à partir d'un serveur si j'ai une connexion Internet. Sinon, je charge depuis le 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)
3
Durai Amuthan.H