Кэш для WKWebView
У меня возникают проблемы с моим пользовательским интернет-браузером. Я использую WKWebView. У меня есть вкладки в моем приложении. Если я нажму на вкладку, загрузятся новые NSURLRequest в WKWebView. Мне нужно реализовать кеш. Если пользователь нажимает на вкладку, я бы предпочел загрузить данные кэша вместо нового. К сожалению, этот код не работает:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:URL cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:0.0];
[self.webView loadRequest:request];
Можете ли вы посоветовать мне, как реализовать кеш для WKWebView?
Ответы
Ответ 1
Если вы использовали NSURLRequestUseProtocolCachePolicy
, который по умолчанию, вам больше нечего делать. Эта политика автоматически рассмотрит ответ от сервера, чтобы решить, действительно ли он должен идти и снова захватить данные.
Если сервер использует HTTP-заголовки Cache-Control и устанавливает максимальный возраст для своих ответов, NSURLSession будет уважать это и возвращать кэшированные ответы до истечения срока их действия.
Ответ 2
Обычно я загружу с сервера, если у меня есть подключение к Интернету. В противном случае я загружу из кеша.
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)