禁止UIWebView的DiskImageCache(Disable UIWebView DiskI

2019-09-02 22:19发布

当加载包含图像(如Microsoft Word中的docx文件)的文件,当它接收到内存无论缓存策略的警告UIWebView中会一直缓存图像。

下面,有一个示例代码段:

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];

在这种情况下,如果出现内存不足的警告,一个新的文件夹中的应用程序,通常命名为DiskImageCache-random_suffixtmp目录中创建和打开的文档中的所有图像保存在这里。

经过一个UIWebView加载一个新的请求,如果我叫

[sharedCache removeAllCachedResponses];

这些临时的图像将被删除。

以防止缓存图像的唯一方法是调用

[NSClassFromString(@"WebCache") performSelector:@selector(setDisabled:) withObject:[NSNumber numberWithBool:YES]];

但是这意味着使用私有API。

是否有一个“苹果型”的方式来实现这一目标?

Answer 1:

我想通了寻找到WebKit的“无证”的喜好之后。 用下面的设置,有可能以禁用DiskImageCache为应用程序的整个生命周期:

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebKitDiskImageCacheEnabled"];
[[NSUserDefaults standardUserDefaults] synchronize];


文章来源: Disable UIWebView DiskImageCache