Cache for WKWebView

≯℡__Kan透↙ 提交于 2019-12-18 04:37:30

问题


I am having trouble with my custom internet browser. I am using WKWebView. I have tabs in my app. If I click on a tab new NSURLRequest loads in the WKWebView. I need to implement a cache. If a user presses on a tab, I'd prefer to load a cache data instead of new. Unfortunately this code doesn't work:

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

Can you guide me on how to implement cache for WKWebView?


回答1:


If you used NSURLRequestUseProtocolCachePolicy, which is the default, there shouldn't be anything else you need to do. This policy will automatically look at the response from the server to decide whether or not it should actually go and grab the data again.

If the server uses Cache-Control HTTP headers and sets the max age for its responses, NSURLSession will respect this and return cached responses before they expire.




回答2:


I typically will load from a server if I have internet connectivity. Otherwise, I load from the 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)


来源:https://stackoverflow.com/questions/30864893/cache-for-wkwebview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!