SDWebImage

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来清理 便利修改的时间修复

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “怎么都是这么个死模样”鬼七推开门走进,看到地上躺的三人厌烦的说道,鬼六没有说话径直走到九九身边,不知是有意还是无...
    一只罗罗阅读 138评论 0 0
  • 小时候认为“陪伴”就是陪在身边的伙伴。 但对于许多事情都没有体会和感触,也没有意识到自己被陪伴。然而生活中,陪...
    y加油阅读 240评论 1 0