所以这就是交易。我最近开始使用 AFNetworking 在开始时使用以下代码下载一些文件:
NSMutableURLRequest* rq = [api requestWithMethod"GET" path"YOUR/URL/TO/FILE" parameters:nil];
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:rq] autorelease];
NSString* path=[@"/PATH/TO/APP" stringByAppendingPathComponent: imageNameToDisk];
operation.outputStream = [NSOutputStream outputStreamToFileAtPath:path append:NO];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"SUCCCESSFULL IMG RETRIEVE to %@!",path)
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// Deal with failure
}];
我的路径实际上插入了路径变量(对不起,现在不在正确的计算机上实际复制意大利面文本,但它与上面的完全相同,但路径不同)
一切都很好!我正在成功下载文件和所有内容。我目前的问题是我试图让缓存工作,但我遇到了很多困难。基本上,我不确定从 AFNetworking 2.0 开始我实际上需要在客户端做什么。我还需要设置 NSURlCache 吗?我是否需要在请求操作上设置不同的缓存类型 header ?我认为它可能只是 完全 内置的,但每次代码运行时我都会收到 200 的状态,即使文件没有更改。如果我必须使用 NSUrlCache,我是否必须自己手动保存成功 block 请求操作上的电子标签,然后再将其反馈回来?任何有关如何取得进展的帮助将不胜感激。谢谢大家!
Best Answer-推荐答案 strong>
AFNetworking 默认使用 NSURLCache 进行缓存。来自 the FAQ :
AFNetworking takes advantage of the caching functionality already provided by NSURLCache and any of its subclasses. So long as your NSURLRequest objects have the correct cache policy, and your server response contains a valid Cache-Control header, responses will be automatically cached for subsequent requests.
注意这个机制缓存了NSData ,所以每次你从这个缓存中检索你需要执行一个有点昂贵的NSData -to-UIImage 操作。这对于快速显示来说性能不够,例如,如果您在 UITableView 或 UICollectionView 中显示图像。
如果是这种情况,请查看 UIImageView+AFNetworking ,它将 UIImage 对象的下载和缓存添加到 UIImageView 。对于某些应用程序,您可以只使用开箱即用的实现,但它是非常基本的。您可能想查看这个类的源代码(它不是很长)并将其用作您自己的缓存机制的起点。
关于ios - AFNetworking 2.0 上的缓存,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/19905814/
|