2012-04-09 1 views
0

В моем коде, я скачиваю все изображения в начале жизненного цикла приложения:Как сделать кеширование с помощью ASIHTTPDownloadCache?

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]]; 

    NSURL *url = [NSURL URLWithString:[item imagePath]]; 
    __block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 
    [request setCompletionBlock:^{ 
    //NSData *responseData = [request responseData]; 
    //[iw setImage: [UIImage imageWithData:responseData] forState:UIControlStateNormal]; 
}]; 

[request setFailedBlock:^{ 
    // NSError *error = [request error]; 
    //[iw setImage:nil forState:UIControlStateNormal];   
}]; 

[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy]; 
    [request startSynchronous]; 
}];     

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

ответ

0

Это действительно возможно. Ваша политика хранения кэшей уже правильная.

Вы должны указать политику кэширования наших правил, а также, см http://allseeing-i.com/ASIHTTPRequest/How-to-use#about_cache_policies

Важно здесь на ум данных срока годности. В режиме по умолчанию ASIHTTPRequest позаботится о дате истечения срока действия, и если данные истекли, перезагрузите данные. По моему опыту, часто сервер не указывает подходящую дату истечения срока действия, поэтому рассмотрите возможность использования ASIOnlyLoadIfNotCachedCachePolicy.

Вы также можете указать дату истечения срока действия самостоятельно, если хотите (это может быть еще более интересно для вас, потому что ваши изображения иногда меняются). Следуйте моей ссылке, вся необходимая вам информация (см. «Другие функции, связанные с кешем»).

О, и еще одна вещь: ASIHTTPRequest не обновляется. Разработчик отказался от проекта. Поэтому ASIHTTPRequest не поддерживает ARC и т. Д. Если вы можете, переключитесь на другую структуру, такую ​​как AFNetworking или RestKit.

+0

Действительно? Хорошо, тогда я могу перейти к AFNetworking. Спасибо. – Burak

+0

Привет снова. Я перешел в AFNetworking. Теперь, что мне нужно сделать, чтобы загрузить всех магов в начале вашего приложения в кеш, а затем использовать их внутри приложения из кеша? – Burak

+0

Вы можете использовать NSURLCache (он работает совместно с категорией UIImageView (AFNetworking)) или вручную вытаскивает постоянный модуль кеша (см. Обсуждение здесь: http: //stackoverflow.com/questions/7529258/what-major-asihttprequest-features-is -afnetworking пропущенное). Если у вас возникли проблемы с использованием кеширования с AFNetworking/NSURLCache, найдите его на SO или откройте другой - правильно помеченный - вопрос – JiaYow

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