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