SDWebImage默認(rèn)的緩存時間是1周
SDWebImage特性
1)提供 UIImageView, UIButton, MKAnnotationView 的分類充蓝,用來顯示網(wǎng)絡(luò)圖片诗越,以及緩存管理
2)異步下載圖片
3)異步緩存(內(nèi)存+磁盤)檩咱,并且自動管理緩存有效性
4)后臺圖片解壓縮
5)同一個 URL 不會重復(fù)下載
6)自動識別無效 URL幔亥,不會反復(fù)重試
7)不阻塞主線程
8)高性能
9)使用 GCD 和 ARC
支持多種圖片格式(包括 WebP 格式)
支持動圖(GIF)
流程圖
目錄結(jié)構(gòu)
清掃磁盤緩存
每新加載一張圖片予借,就會新增一份緩存宇姚,時間一長尝哆,磁盤上的緩存只會越來越多秉撇,所以我們需要定期清除部分緩存。值得注意的是秋泄,清掃磁盤緩存(clean)和清空磁盤緩存(clear)是兩個不同的概念琐馆,清空是刪除整個緩存目錄,清掃只是刪除部分緩存文件恒序。
清掃磁盤緩存有兩個指標(biāo):一是緩存有效期瘦麸,二是緩存體積最大限制。SDImageCache中的緩存有效期是通過 maxCacheAge 屬性來設(shè)置的歧胁,默認(rèn)值是 1 周滋饲,緩存體積最大限制是通過 ?maxCacheSize 來設(shè)置的,默認(rèn)值為 0喊巍。
SDImageCache 在初始化時添加了通知觀察者屠缭,所以在應(yīng)用即將終止時和退到后臺時,都會調(diào)用 -cleanDiskWithCompletionBlock: 方法來異步清掃緩存崭参,清掃磁盤緩存的邏輯是呵曹,先遍歷所有緩存文件,并根據(jù)文件的修改時間來刪除過期的文件,同時記錄剩下的文件的屬性和總體積大小奄喂,如果設(shè)置了 maxCacheAge 屬性的話铐殃,接下來就把剩下的文件按修改時間從小到大排序(最早的排最前面),最后再遍歷這個文件數(shù)組跨新,一個一個刪富腊,直到總體積小于 desiredCacheSize 為止,也就是 maxCacheSize 的一半域帐。
內(nèi)存清理(memory):內(nèi)存警報的時候清理
緩存(Disk):默認(rèn)一周蟹肘,設(shè)置maxCacheAge來清理 便利修改的時間修復(fù)