Удаление внутреннего кеша UIWebView

Я показываю веб-приложение в UIWebView, и иногда содержимое страниц будет меняться. После изменения содержимого приложение очистит кеш. Но когда я перехожу на страницу, которую я ранее посещал, UIWebView не отправляет HTTP-запрос GET, но загружается из кеша, даже если я отключил кеш следующим образом:

[[NSURLCache sharedURLCache] removeAllCachedResponses];
[[NSURLCache sharedURLCache] setDiskCapacity:0];
[[NSURLCache sharedURLCache] setMemoryCapacity:0];

Сначала я загружаю запрос с помощью cachePolicy cachePolicy:NSURLRequestReturnCacheDataElseLoad.

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:myURLString] cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:10.0]];

UIWebView имеют некоторый внутренний кеш. Уже посещенные страницы будут загружены из этого внутреннего кеша, а не через NSURLCache, а также там не будет отправлен запрос.

Есть ли способ очистить внутренний кеш UIWebView? Я даже воссоздаю UIWebView, но кеш все еще существует.

Ответы

Ответ 1

Похоже, что здесь происходит то, что он перезагружает фактический HTML файл, но не обязательно перезагружает ресурсы на этой странице.

Возможное решение, которое я видел, - добавить параметр запроса в конец URL-адреса. Например:

NSString *testURL = [NSString stringWithFormat:@"%@?t=%@", url, randQuery];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:testURL] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:10.0]];

где вы генерируете случайную буквенно-цифровую строку в качестве параметра запроса randQuery или сохраняете постоянный счетчик и просто подсчитываете.

Это должно заставить UIWebView загружаться с удаленного ресурса.

Ответ 2

У меня была такая же проблема, и для свойства HTTPShouldHandleCookies значение NO было исправлено.

Например:

NSMutableURLRequest  *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:strurl]];

[request setHTTPShouldHandleCookies:NO];

[webView loadRequest: request];

Надеюсь на эту помощь.