我在本地缓存一些UIWebView所需的较大文件,并且有一个NSURLCache子类,其自定义实现可以帮助提供这些文件。
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
我使用它来劫持请求并返回本地存储的文件副本(主要是t
)cachedResponseForRequest:body的主体(没有样板)基本上是:
// logic to figure out what the local file is, load it into a NSData object (f)
NSURLResponse *r = [[NSHTTPURLResponse alloc] initWithURL:request.URL MIMEType:mimetype expectedContentLength:[f length] textEncodingName:nil];
NSCachedURLResponse *cr = [[NSCachedURLResponse alloc] initWithResponse:r data:f] ;
[super storeCachedResponse:cr forRequest:request];
return cr;
除了单个svg图像之外,这适用于所有缓存内容。当尝试加载svg映像时,它将继续通过cachedResponseForRequest:request,构建一个NSCachedURLResponse对象并返回它。
然而,应用程序接下来要做的是从远程服务器下载文件,然后从缓存中提供任何后续请求。我们不想远程下载文件,因为它相对较大并影响性能。
NSURLCache是否处理.svg文件与其他文件类型不同?
答案 0 :(得分:0)
使用以下命令初始化缓存时,NSUrlCache将处理的文件的最大大小会受到参数的影响:
initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity diskPath:(NSString *)diskPath
最大文件大小与memoryCapacity相关。您应该将其设置为至少10(为什么?)乘以您要处理的最大文件大小。
尝试使用最大15MB的文件