SDWebImage緩存機制

1.先顯示placeholderimage(占位圖片),再根據URL來在本地查找圖片

2.從緩存中根據cachekey來查找圖片是否已經在緩存當中

3.如果緩存中已經有圖片緩存,進行回調并將圖片展示

4.如果內存中沒有該圖片的緩存,那么生成NSInvocationOperation添加到隊列,從硬盤中查找圖片是否已經被下載。

5.根據URLkey在硬盤緩存目錄下嘗試讀取圖片文件,這一步是在NSOperation在操作,所以要回到主線程進行結果回調。

6.如果上一步操作從硬盤中讀取到了圖片,那么將圖片添加到內存緩存中(如果空閑內存過小,會先清空內存緩存),然后進行回調展示圖片

7.如果從硬盤緩存目錄讀取不到圖片,那就說明所有的緩存中都不存在該圖片,那么需要下載圖片

8.共享或者創建一個下載器,開始下載圖片。

9.圖片下載由NSURLConnection來做,實現相關的delegate來判斷圖片的下載狀態,下載中、下載完成、下載失敗。

10利用imageIO做按圖片下載進度加載效果

11.數據下載完成后交給SDWebImageDecoder做圖片解碼處理。

12.圖片解碼處理在一個NSOperationQueue
完成,不會拖慢主線程的UI,所有如果有需要對下載的圖片進行二次處理時,最哈也在這里完成,效率會好很多。

13.當主線程中宣告解碼按成 之后,回調給下載器,下載器再回調給回調給 SDWebImageManager,告知圖片下載完成。

14.通知所有的下載器下載完成,回調給所需要的地方來進行圖片的展示。

15.將圖片保存到到SDImageCache中,內存緩存和硬盤緩存都要保存。

16.寫文件到硬盤在單獨的NSInvocationOperation中進行,避免拖慢主線程。


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容