Я установил NSURLCache в своем AppDelegate:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:50 * 1024 * 1024
diskCapacity:50 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:URLCache];
Затем я пытаюсь использовать его с cachePolicy: NSURLRequestReturnCacheDataElseLoad
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:getUrl
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:timeInterval];
NSURLConnection *theConnection = [NSURLConnection connectionWithRequest:request delegate:self];
Но он вообще не работает (каждый раз запрашивает сервер и даже не пытается использовать кеш).
Я проверил заголовки в ответе сервера, вот он:
"Cache-Control" = "no-cache, no-store, max-age=0, must-revalidate";
"Content-Encoding" = gzip;
"Content-Type" = "application/json; charset=utf-8";
Date = "Sun, 29 Dec 2013 15:13:12 GMT";
Expires = "Fri, 01 Jan 1990 00:00:00 GMT";
P3P = "CP=\"NOI DSP COR NID ADMa OPTa OUR NOR\"";
Pragma = "no-cache";
Server = QRATOR;
Из документации Apple:
Политика кеширования NSURLRequestReturnCacheDataElseLoad заставляет систему загрузки URL использовать кэшированные данные, игнорируя их возраст или дату истечения срока, и загружать данные из исходного источника, только если нет кэшированной версии.
Мои вопросы:
Должен ли он работать (под работой я имею в виду кэширование ответа сервера) с "Cache-Control" = "no-cache, no-store, max-age = 0, must-revalidate" в заголовке ответа?
Если нет, то какое решение я должен использовать для кеширования ответов сервера? (Я не могу вносить изменения на стороне сервера)