SDWebImage 實現原理及大體介紹

1、SDWebImage 實現原理:緩存

  1. 首先讓佔位圖先顯示。服務器

  2. SDWebImageManage交給 SDImageCache 先從內存中查找是否有圖片,會以URL做爲數據的索引在內存中查找是否有對應的緩存。代理

  3. 若是有緩存,經過代理進行回調展現圖片。索引

  4. 若是內存緩存中沒有找到,生成 NSInvocationOperation 添加到隊列,會經過MD5處理過的key來硬盤中查詢是否有圖片。隊列

  5. 若是找到了,就把硬盤中的數據加載到內存中並顯示。圖片

  6. 若是沒有找到,會生成一個下載器向遠程服務器發出請求開始下載圖片。內存

  7. 圖片下載由NSURLConnection 來作,實現相關delegate來判斷圖片下載中、下載完成和下載失敗。md5

  8. 下載後的圖片會被保存到內存和硬盤。it

  9. 進行界面展現。io

    2、

    SDWebImageDownloader.m中的init方法

    _downloadQueue.maxConcurrentOperationCount = 6;

    三. SDWebImage支持gif麼?

    支持。UIImage+GIF

    4、SDWebImage中怎麼判斷文件的類型的

        在NSData+ImageContentType.m中

根據文件頭的第一個字節判斷的 ——>將圖片放到Bundle中—> Open As—> HEX

 case 0xFF:

 

            return @"image/jpeg";

        case 0x89:

            return @"image/png";

        case 0x47:

            return @"image/gif";

        case 0x49:

        case 0x4D:

            return @"image/tiff";

5、

SDWebImage緩存文件名稱

 

爲了防止緩存的圖片名稱衝突,根據md5計算的

6、SD默認超時時間是15s

相關文章
相關標籤/搜索