2013-09-06 1 views
0

Я использую AfNetworking, я делаю вызов для новых данных, но я все время возвращаю кешированный результат. Так что, если я нахожусь в VC, который показывает данные, вернитесь к корню и измените данные на моем сервере, я тогда жду 30 секунд, и когда я вернусь в VC, я увижу старые данные. Если я ударил URL-адрес в браузере, я вижу правильные данные. Если я заново запустил приложение, я увижу изменения в данных.NSURLRequest: всегда возвращается ответ NSCachedURLResponse.

Мой ответ от моего сервера отправляет заголовок управления кэшем: Cache-Control: макс-возраст = 10, общественного

Из того, что я могу сказать, что я всегда всегда получаю NSCachedURLResponse назад и что кэш не прислушиваясь к моей политике управления кэшем.

В моей AppDelegate я поставил свою SharedURLCache:

NSURLCache *URLCache = [[NSURLCache alloc] initWithMemoryCapacity:8 * 1024 * 1024 diskCapacity:8 * 1024 * 1024 diskPath:nil]; 
[NSURLCache setSharedURLCache:URLCache]; 

Как установить URLRequest:

NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:30.0]; 

Я не делать ничего другого с участием NSURLCache.

Любые идеи?

BooRanger

ответ

0

поведения вы описали именно то, что я ожидал бы от кода вы публикуемый. Вы пробовали использовать NSURLRequestReloadIgnoringLocalAndRemoteCacheData вместо NSURLRequestUseProtocolCachePolicy? В соответствии с thisNSURLRequestUseProtocolCachePolicy средств:

Указывает, что логика кэширования определяется в реализации протокола , если таковые имеются, используется для конкретного запроса URL-нагрузки. Это политика по умолчанию для запросов на загрузку URL-адресов.

Так что, если вы хотите, чтобы всегда загружать с сервера, вы должны использовать NSURLRequestReloadIgnoringLocalAndRemoteCacheData, который описан как:

Указывает, что следует не только локальные данные кэша игнорируются, но , что прокси-серверы и другим промежуточным продуктам следует поручить игнорировать их кэши, насколько позволяет протокол.

+0

У меня создалось впечатление, что если я установлю NSURLRequestUseProtocolCachePolicy, он будет использовать мой заголовок «Cache-Control» для установки кеша. – BooRanger

+0

NSURLRequestReloadIgnoringLocalAndRemoteCacheData тоже не работает, возможно, мне что-то не хватает в другом месте ... Cheers – BooRanger

+0

Прошло более 10 секунд? – ipmcc