我正在本地缓存UIWebView所需的一些较大的文件,并且有一个带有自定义实现的NSURLCache子类来帮助提供这些文件。
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request我使用它来劫持请求,并返回本地存储的文件副本(主要是
cachedResponseForRequest:request的主体(没有样板)本质上是:
// 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文件的方式是否与其他文件类型不同?
发布于 2013-02-28 15:12:56
使用以下参数初始化缓存时,NSUrlCache将处理的文件的最大大小可能会受到以下参数的影响:
initWithMemoryCapacity:(NSUInteger)memoryCapacity diskCapacity:(NSUInteger)diskCapacity diskPath:(NSString *)diskPath
最大文件大小与memoryCapacity相关。您应该将其设置为至少10 (为什么?)乘以要处理的最大文件大小。
我已经尝试过使用https://github.com/evermeer/EVURLCache对最大15MB的文件执行此操作
https://stackoverflow.com/questions/11717003
复制相似问题