Использовать NSURLConnection кеш, когда устройство не в сети - PullRequest
4 голосов
/ 19 января 2012

В подклассе NSOperation я использую следующий код для загрузки xml-файла с нашего сервера, а затем анализирую его:

NSURLRequest * request = [NSURLRequest requestWithURL:[NSURL URLWithString:url] 
                                          cachePolicy:NSURLRequestUseProtocolCachePolicy
                                      timeoutInterval:15];
NSData * receivedData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];

Во второй раз, когда я делаю тот же запрос, сервер возвращает HTTP 304, и кэшированные данные ответа сохраняются в receivedData. Пока все хорошо.

Мой вопрос: возможно ли получить такой же кешированный ответ, когда устройство находится в автономном режиме ?

1 Ответ

0 голосов
/ 30 января 2012

NSURLCache не поддерживает кэширование диска.Вы можете просто сохранить его вручную или использовать это: https://github.com/steipete/SDURLCache

Это очень простой кеш, который выполняет свою работу ... очень простое использование, только один класс ... Он также поддерживает etags.



    // Do this only once in your app...
    SDURLCache *urlCache = [[SDURLCache alloc] initWithMemoryCapacity:1024*1024   // 1MB mem cache
                                                         diskCapacity:1024*1024*5 // 5MB disk cache
                                                             diskPath:[SDURLCache defaultCachePath]];
    [NSURLCache setSharedURLCache:urlCache];
    [urlCache release];


...