使用 AFNetworking 进行图像缓存
Posted
技术标签:
【中文标题】使用 AFNetworking 进行图像缓存【英文标题】:Image Caching With AFNetworking 【发布时间】:2015-06-29 11:44:11 【问题描述】:AFNetworking 的缓存机制对我不起作用,我有一张 500ko 的大尺寸图像,我想缓存它。但是每次我关闭应用程序并再次打开它时,我都必须等待 20 秒才能加载图像,因此缓存系统无法正常工作是代码:
我试过了:
[imageView setImageWithURL:[NSURL URLWithString:imageURL]
placeholderImage:[UIImage imageNamed:@"placeholder"]];
然后尝试:
NSURLRequest *imageRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:imageURL]
cachePolicy:NSURLRequestReturnCacheDataElseLoad
timeoutInterval:60];
[imageView setImageWithURLRequest:imageRequest
placeholderImage:[UIImage imageNamed:@"placeholder"]
success:nil
failure:nil];
【问题讨论】:
也许 500kb 太多了?知道最大可缓存图像大小是多少吗? 我可以看看你是如何配置缓存的吗? @Ricardo:其实我就是这么干的,还需要在其他地方配置缓存吗? @pe60t0:我想处理所有情况,所以我正在使用大图像进行测试。如何找到最大可缓存图像大小? @pe60t0 正如你所提到的,大小差不多 【参考方案1】:NSURLCache 默认不会写入磁盘,所以我们需要在应用委托中声明一个共享的 NSURLCache:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024
diskCapacity:100 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
Reference
【讨论】:
我应该手动将图像传递到这个sharedCache
还是AFNetworking 会为我们做这件事。在我的情况下,当我重新打开应用程序时,它没有使用缓存的图像。以上是关于使用 AFNetworking 进行图像缓存的主要内容,如果未能解决你的问题,请参考以下文章