一.二级缓存
获取图片URL的时候,首先检查内存缓存,如果有则获取该图片;没有则检查外存缓存,有则获取该图片,没有则从URL下载,并根据存储策略存储到内存和外存中。
其中几个要点是:
1.内存缓存方式
2.外存缓存方式
3.下载方式
二.SD的方式
1.内存缓存的方式是NSCode
NSCode可以根据自定义的存储条数和相对花销自动清理最早的存储数据,保证内存空间稳定,而且是线程安全的。
//创建NSCache
- (NSCache *)cache
{
if (_cache == nil) {
_cache = [[NSCache alloc] init];
_cache.countLimit =100;//设置最大存储数量,超过则自动清理之前的存储数据
//_cache.totalCostLimit=100;//设置最大相对开销数,超过则自动清理之前的存储数据
}
return _cache;
}
//存储数据
[self.cache setObject:value forKey:key];
//设置自定义开销
[self.cache setObject:value forKey:key cost:2];
//获取数据
self.cache objectForKey:key];
2.外存缓存的存储方式是把图片进行MD5加密,存储在Lib/Cache的子文件夹中,默认过期时间是1week。
3.异步下载资源,把任务放到队列中防止重复下载,默认FIFO,最大并发数6。核心类是
DownLoader,DownOperation。
网友评论