Кеш для 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)
Другие вопросы по тегам