缓存策略,AFNetworking

时间:2014-02-16 23:10:49

标签: ios caching afnetworking-2

我下载图片并在我的应用中使用它。我有超过100张图像,我不是一次全部使用它。我会用缓存。然后我加载我保存到缓存的所有图像。然后我将转到应用程序的其他部分,我将使用一些图像。

我真的不明白ios缓存是如何工作的,我有一个问题:在加载所有图像并将其保存到缓存后,我应该如何使用这些图像,我的意思是,我需要从缓存加载它们或使用图像实例我有什么保存它缓存?

对于AFNetworking 2.0,哪种缓存策略更有用?

1 个答案:

答案 0 :(得分:0)

AFNetworking具有图像内存缓存功能。如果你有100张图片可能适合你,可能不适合。

您还应该在这里阅读NSURLCache - http://nshipster.com/nsurlcache/

如果你使用NSURLCache,你不必考虑缓存 - 当你开始下载已经缓存的东西时,系统只会给你下载的文件。

更新: 下载数据的时间到期由服务器设置作为响应。但您可以通过NSURLConnectionDelegate方法编辑或忽略它。例如:

- (NSCachedURLResponse *)connection:(NSURLConnection *)connection willCacheResponse:(NSCachedURLResponse *)cachedResponse {

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse*)[cachedResponse response];

    // Look up the cache policy used in our request
    if([connection currentRequest].cachePolicy == NSURLRequestUseProtocolCachePolicy) {
        NSDictionary *headers = [httpResponse allHeaderFields];
        NSString *cacheControl = [headers valueForKey:@"Cache-Control"];
        NSString *expires = [headers valueForKey:@"Expires"];
        if((cacheControl == nil) && (expires == nil)) {
            NSLog(@"server does not provide expiration information and we are using NSURLRequestUseProtocolCachePolicy");
            return nil; // don't cache this
        }
    }
    return cachedResponse;
}