1、SDWebImage 實現原理:緩存
首先讓佔位圖先顯示。服務器
SDWebImageManage交給 SDImageCache 先從內存中查找是否有圖片,會以URL做爲數據的索引在內存中查找是否有對應的緩存。代理
若是有緩存,經過代理進行回調展現圖片。索引
若是內存緩存中沒有找到,生成 NSInvocationOperation 添加到隊列,會經過MD5處理過的key來硬盤中查詢是否有圖片。隊列
若是找到了,就把硬盤中的數據加載到內存中並顯示。圖片
若是沒有找到,會生成一個下載器向遠程服務器發出請求開始下載圖片。內存
圖片下載由NSURLConnection 來作,實現相關delegate來判斷圖片下載中、下載完成和下載失敗。md5
下載後的圖片會被保存到內存和硬盤。it
進行界面展現。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