Кэширование больших изображений из Afnetworking
Я использую AFNetworking для загрузки некоторых изображений из Интернета в свое приложение. Я использую этот код для загрузки этих изображений,
AFHTTPRequestOperation *requestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:_linkString[indexPath.item]]]];
requestOperation.responseSerializer = [AFImageResponseSerializer serializer];
[requestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150, 150)];
_imageView.image = responseObject;
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Image error: %@", error);
}];
[requestOperation start];
Я заметил, что все ответные изображения кэшируются на диск автоматически с помощью этого метода. Я тоже хочу эту опцию в моем приложении. Все кэшированные изображения имеют размер около 150 КБ. Но когда я загружаю образ размером около 2 МБ, эти изображения не кэшируются автоматически на диск.
Почему изображения малого размера кэшируются, а изображения большого размера не кэшируются? Я использую неправильный способ кэширования изображений в AFNetworking?
Может ли кто-нибудь дать мне решение для кэширования 2 МБ изображений, используя AFNetworking, а также....
Спасибо
1 ответ
Проблема не в AFNetworking, а в NSURLCache. По умолчанию NSURLCache не будет кэшировать файлы размером более 10% (не уверен, каков точный процент) размера кэша.
Но увеличить размер кеша поможет:
[[NSURLCache sharedURLCache] setMemoryCapacity:(20*1024*1024)];
[[NSURLCache sharedURLCache] setDiskCapacity:(200*1024*1024)];