SDWebImage默认的缓存时间是1周
SDWebImage特性
1)提供 UIImageView, UIButton, MKAnnotationView 的分类,用来显示网络图片,以及缓存管理
2)异步下载图片
3)异步缓存(内存+磁盘),并且自动管理缓存有效性
4)后台图片解压缩
5)同一个 URL 不会重复下载
6)自动识别无效 URL,不会反复重试
7)不阻塞主线程
8)高性能
9)使用 GCD 和 ARC
支持多种图片格式(包括 WebP 格式)
支持动图(GIF)
流程图
目录结构
清扫磁盘缓存
每新加载一张图片,就会新增一份缓存,时间一长,磁盘上的缓存只会越来越多,所以我们需要定期清除部分缓存。值得注意的是,清扫磁盘缓存(clean)和清空磁盘缓存(clear)是两个不同的概念,清空是删除整个缓存目录,清扫只是删除部分缓存文件。
清扫磁盘缓存有两个指标:一是缓存有效期,二是缓存体积最大限制。SDImageCache中的缓存有效期是通过 maxCacheAge 属性来设置的,默认值是 1 周,缓存体积最大限制是通过 maxCacheSize 来设置的,默认值为 0。
SDImageCache 在初始化时添加了通知观察者,所以在应用即将终止时和退到后台时,都会调用 -cleanDiskWithCompletionBlock: 方法来异步清扫缓存,清扫磁盘缓存的逻辑是,先遍历所有缓存文件,并根据文件的修改时间来删除过期的文件,同时记录剩下的文件的属性和总体积大小,如果设置了 maxCacheAge 属性的话,接下来就把剩下的文件按修改时间从小到大排序(最早的排最前面),最后再遍历这个文件数组,一个一个删,直到总体积小于 desiredCacheSize 为止,也就是 maxCacheSize 的一半。
内存清理(memory):内存警报的时候清理
缓存(Disk):默认一周,设置maxCacheAge来清理 便利修改的时间修复
网友评论