При загрузке документов, содержащих изображения (например, файл Microsoft Word docx), UIWebView всегда будет кэшировать изображения, когда он получает предупреждение о памяти, независимо от политики кэша.Отключить UIWebView DiskImageCache
После, есть пример фрагмента кода:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024
diskCapacity:0
diskPath:[NSTemporaryDirectory() stringByAppendingPathComponent:@"URLCache"]];
[NSURLCache setSharedURLCache:sharedCache];
NSURLRequest* req = [NSURLRequest requestWithURL:
[NSURL URLWithString:@"http://www.its.swinburne.edu.au/about/projects/templates/TechnicalSpecificationTemplatev1.1-[ProjectName]-[ver]-[YYYYMMDD].docx"]
cachePolicy:NSURLRequestReloadIgnoringCacheData
timeoutInterval:10];
В этих условиях, если возникает предупреждение памяти, новая папка создается в TMP директории приложения, обычно называют DiskImageCache-random_suffix и все изображения в открытом документе сохраняются здесь.
После UIWebView загружает новый запрос, если я позвоню
[sharedCache removeAllCachedResponses];
эти временные изображения удаляются.
Единственный способ предотвратить кэширование изображений, чтобы позвонить
[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];
, но это означает, что с помощью частного API.
Есть ли способ, «дружественный Apple» для достижения этого?
Как представляется, в iOS7 для меня нет. – DrMickeyLauer
Я только что протестировал это решение с помощью iOS 7.1.1 и загрузил пример кода на [GitHub] (https://github.com/objectiveself/WebViewImageCacheControl). Обратите внимание, что настройка вступит в силу при следующем запуске приложения, когда UIWebView будет инициализирован. –
@DrMickeyLauer, попробуйте WebKitOfflineWebApplicationCacheEnabled – malex