4
加載包含圖像的文檔時(例如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。
是否有「蘋果友好」的方式來實現這一目標?
似乎無法在iOS7中爲我工作。 – DrMickeyLauer 2014-04-23 08:40:31
我剛剛使用iOS 7.1.1測試了這個解決方案,並將示例代碼上傳到了[GitHub](https://github.com/objectiveself/WebViewImageCacheControl)。 請注意,在UIWebView初始化時,下次啓動應用程序時,設置將生效。 – 2014-05-05 09:23:25
@DrMickeyLauer,嘗試WebKitOfflineWebApplicationCacheEnabled – malex 2015-02-19 22:46:45