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中进行,避免拖慢主线程。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容