2012-04-20 1 views
5

Я использую NSURLRequest с CachePolicy для загрузки plist в NSData. Когда я изменяю содержимое своего plist, мое приложение игнорирует это и все еще представляет содержимое, которое кэшируется. Как долго сохраняется кеш? Если да, то есть возможность сказать, как долго сохраняются данные кэша? Есть ли способ проверить NSURLRequest, если данные на сервере новее, чем кеш, загружают данные с сервера или, если они равны кешу, используют кеш?Политика кэширования NSURLRequest

ответ

2

Обратите внимание на контроль кеширования ответов в URLLoadingSystem docs.

Вы можете добавить свои собственные даты в методах делегата

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 

Гораздо более простой системой кэширования является ASIHTTPRequest. Я рекомендую использовать эту систему загрузки URL.

Из яблока документы:

Пример в листинге 6 предотвращает кэширование HTTPS ответов. Он также добавляет текущую дату в словарь пользовательской информации для ответов , которые кэшируются.

-(NSCachedURLResponse *)connection:(NSURLConnection *)connection 
       willCacheResponse:(NSCachedURLResponse *)cachedResponse 
{ 
    NSCachedURLResponse *newCachedResponse = cachedResponse; 

    if ([[[[cachedResponse response] URL] scheme] isEqual:@"https"]) { 
     newCachedResponse = nil; 
    } else { 
     NSDictionary *newUserInfo; 
     newUserInfo = [NSDictionary dictionaryWithObject:[NSCalendarDate date] 
               forKey:@"Cached Date"]; 
     newCachedResponse = [[[NSCachedURLResponse alloc] 
           initWithResponse:[cachedResponse response] 
            data:[cachedResponse data] 
            userInfo:newUserInfo 
            storagePolicy:[cachedResponse storagePolicy]] 
          autorelease]; 
    } 
    return newCachedResponse; 
} 
+0

Thanks.I установить его теперь к нулю. Но как сделать кеш в течение определенного времени или проверить, имеются ли новые данные с сервера? – halloway4b

+0

Я обновил мой ответ –

+0

IOS 6.1 SDK документации говорится следующее: соединения: willCacheResponse: Направлены до соединения хранит в кэше ответа в кэше, чтобы дать делегату возможность изменить его. (требуется) (Доступно в iOS 2.0 через iOS 4.3.) – cynistersix

 Смежные вопросы

  • Нет связанных вопросов^_^