3

我已經配置了會議:IOS NSURLSession(默認配置)不緩存請求

- (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+

+0

可能重複[可以在iOS上使用HTTP緩存與NSURLSessionDownloadTask?](http://stackoverflow.com/questions/26175133/can-i-use- http-cache-with-an-nsurlsessiondownloadtask-on-ios) – jlehr

+0

是的,看起來像是一個bug,但我想看到成功使用上述技術的人。 –

回答

0

緩存與下載任務不同。 下載的數據存儲在臨時目錄中,如果需要永久保存,則需要將其移至應用程序路徑。 在下一個請求中使用緩存數據(基於響應或設置緩存策略)。 注意:操作系統可以在某些情況下刪除緩存數據