Удаление внутреннего кеша 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];
Надеюсь на эту помощь.