我在本地缓存了 UIWebView 所需的一些较大的文件,并且有一个 NSURLCache 的子类和一个自定义实现来帮助服务这些文件。
- (NSCachedURLResponse *)cachedResponseForRequest:(NSURLRequest *)request
我正在使用它来劫持请求并返回本地存储的文件副本(主要是 t
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 文件是否与其他文件类型不同?