我正在使用AFNetworking 2:
NSURLCache *sharedCache = [[NSURLCache alloc] initWithMemoryCapacity:2 * 1024 * 1024
diskCapacity:100 * 1024 * 1024
diskPath:nil];
[NSURLCache setSharedURLCache:sharedCache];
我有不同类型的内容:
如果用户打开100张大图像,这些图像将占用所有缓存内容怎么办?我认为大图像将取代我的小内容,即使它还没有过期。我该如何解决?我可以将内存分成两部分(首先是小内容,第二部分是大图像),还是应该为这些类型的内容使用不同的AFHTTPSessionManager
子类和不同的缓存策略?
答案 0 :(得分:2)
无论您是否使用AFNetworking,所有可缓存的网址请求都使用相同的NSURLCache
。创建一个新的AFNetworking会话管理器不会有所作为。
NSURLCache
会将旧请求从内存移动到磁盘。它不在文档中,但我敢打赌,如果内容被清除,那么NSURLCache
会在决定要删除的内容时权衡访问频率和到期日期。
如果需要保证某些数据可用,您应该自己将其写入磁盘。否则,你应该让NSURLCache
做它的事情。
如果你不喜欢这个答案,另一种方法是使用像SDWebImage
这样的库(或自己动手),它不使用NSURLCache
但是实现了自己独立的缓存机制。这样,您的大图像就不会干扰您的缓存。