Кэш для WKWebView

У меня проблемы с моим пользовательским интернет-браузером. Я использую WKWebView. У меня есть вкладки в моем приложении. Если я нажму на вкладку, новый NSURLRequest загрузится в WKWebView. Мне нужно реализовать кеш. Если пользователь нажимает на вкладку, я бы предпочел загрузить данные кеша вместо новых. К сожалению, этот код не работает:

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

Можете ли вы рассказать мне, как реализовать кеш для WKWebView?


person user553536    schedule 16.06.2015    source источник


Ответы (2)


Если вы использовали NSURLRequestUseProtocolCachePolicy, который используется по умолчанию, вам не нужно ничего делать. Эта политика будет автоматически рассматривать ответ сервера, чтобы решить, следует ли ему действительно пойти и снова получить данные.

Если сервер использует HTTP-заголовки Cache-Control и устанавливает максимальный возраст для своих ответов, NSURLSession будет учитывать это и возвращать кэшированные ответы до истечения срока их действия.

person Dreaming In Binary    schedule 25.06.2015
comment
Интересно, будет ли это работать, когда нет подключения к Интернету. Это то, что происходит с UIWebView. не уверен насчет WKWebView. - person Rahatur; 22.12.2018

Обычно я загружаюсь с сервера, если у меня есть подключение к Интернету. В противном случае загружаю из кеша.

 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)
person Durai Amuthan.H    schedule 28.01.2016
comment
Это не работает для WKWebView, как упоминалось здесь, forums.developer.apple.com/thread/ 53573. - person guoc; 15.03.2017
comment
@guoc - я пробовал это сам в прошлом году, и он отлично работал в wkwebview - person Durai Amuthan.H; 16.03.2017
comment
@DuraiAmuthan.H, вы пробовали это с WKWebView и отключили интернет-соединение? - person Rahatur; 22.12.2018