ios NSURLSession(默认配置)不缓存请求

时间:2015-01-02 17:04:07

标签: ios nsurlsession nsurlcache nsurlsessiondownloadtask nsurlsessionconfiguration

我已配置会话:

- (void)createSession {
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfig.requestCachePolicy = NSURLRequestReturnCacheDataElseLoad;
    _session = [NSURLSession sessionWithConfiguration:sessionConfig];
}

然后,我尝试向服务器发出请求(从Twitter的API获取图像):

    NSURL *url = tweet.mediaUrl;
    NSURLSessionDownloadTask *getImageTask =
    [_session downloadTaskWithURL:url
                completionHandler:^(NSURL *location,
                                    NSURLResponse *response,
                                    NSError *error) {
                    UIImage *downloadedImage = [UIImage imageWithData: [NSData dataWithContentsOfURL:location] ];
                    dispatch_async(dispatch_get_main_queue(), ^{

                    //setting image to a view


                    });
                }];

    [getImageTask resume];

图像正在加载和设置正确,但当我在我的机器上关闭Internet连接(没有终止应用程序,它仍然运行...)我得到空的UIImageViews - 所以会话尝试从服务器下载图像,但不使用任何缓存 造成这个问题的原因是什么? 我尝试使用共享会话,或者使用预定义磁盘和内存空间配置共享缓存,没有任何帮助 iOS模拟器,iOS 8 +

1 个答案:

答案 0 :(得分:0)

缓存与下载任务不同。 下载的数据存储在临时目录中,如果需要永久性,则需要将其移动到应用程序路径。 在下一个请求中使用缓存数据(基于响应或设置缓存策略)的位置。 注意:操作系统可以在某些情况下删除缓存数据