Добрый день, ребят!
Столкнулся с проблемой - не удается отучить
UIWebView обращаться к локальному кэшу во время повторной загрузки одной и той же веб-страницы. Мне необходимо, чтобы каждый новый запрос лез в интернет (актуально только для iOS 7).
Вот что имеется:
1) Кастомный
NSURLProtocol, который просто отслеживает http запросы.
2) Имеется
UIWebView в первом
UIViewController. В этот
UIWebView загружаем веб-сайт:
NSMutableURLRequest *request =[NSMutableURLRequest requestWithURL:
[NSURL URLWithString:@"http://site.ru"]
cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
3) Во время загрузки страницы в
NSURLProtocol видим условно 20 запросов к этому
site.ru (загружаются изображения, css, js и т.д.)
4) Во втором
UIViewController со своим
UIWebView делаем аналогичный запрос с тем же веб-сайтом.
5) В
NSURLProtocol видим условно только 5 запросов к этому же
site.ru (изображения, css, js не загружаются)
Очевидно,
UIWebView полез в кэш и достал оттуда все ему необходимое, чего мне нужно избежать.
Что я пробовал:
1) Самостоятельно инициализировать кеш (также передавать в качестве memoryCapacity и diskCapacity нули).
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:
4 * 1024 * 1024 diskCapacity:32 * 1024 * 1024 diskPath:@"dir"];
[NSURLCache setSharedURLCache:URLCache];
2) Перед отправкой запроса вызывать:
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:(NSURLRequest *)];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
3) Очищать директорию с кэшем
NSCachesDirectory (ужас!)
4) Манипулировать флагами
cachePolicy NSURLRequestReloadIgnoringCacheData
5) Избегать кэширование на уровне
NSURLProtocol:
- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:
(NSCachedURLResponse *)cachedResponse {
return nil; }
6) Прибавлять к адресу параметр времени
site.ru?timestamp=21324353 (ужас!)
7) Наследовать
NSURLCache и избегать кэширование:
- (NSCachedURLResponse*)cachedResponseForRequest:(NSURLRequest*)request {
return nil; }
Ни один из вышеперечисленных способов никак не влияет на
UIWebView. Складывается впечатление, что у него какой-то свой кеш, до которого не добраться.
Кто-нибудь сталкивался? Может я упустил что-то.