SDWebImage底层解析

2017-08-11  本文已影响13人  攻克乃还_

0.SDWebImage内部结构图:



1.框架底层用NSOperationQueue和GCD混合开启线程。

2.框架底层清空缓存:clear清除缓存,是清除目录下所有文件,创建空的文件夹;clean是清除过期的缓存,清除超出最大缓存数额的缓存,过期时间为7天。

- (void)clearDisk;

- (void)cleanDisk;

- (void)clearMemory;

3.取消所有操作:

[[SDWebImageManager sharedManager] cancelAll];

4.框架底层缓存文件的名称是如何保存的:

把图片的URL进行MD5加密,得出字符串就是名称。

5.框架底层对内存警告的处理:

监听通知的方式来响应处理缓存。

6.框架底层缓存处理方式:

NSCache

7.框架底层判断图片类型:

匹配第一个字节

8.框架底层队列中任务的处理方式:

SDWebImageDownloaderFIFOExecutionOrder 先进先出

9.框架底层如何下载图片的:

不是[NSData dataWithContentsOfURL:],而是

发送网络请求来下载图片,内部使用NSURLConnection

10.框架底层默认请求超时时间:

15s

11.框架底层的原理实现机制:

简单版本:

11.1.显示占位图片。

11.2.查看缓存中是否已有图片,如果有展示。如果没有,下一步。

11.3.查看磁盘缓存中是否已有图片,如果有展示,然后添加到内存缓存。如果没有,下一步。

11.4.创建新的下载任务,开始下载,下载完成展示图片,进行内存缓存与磁盘缓存。

复杂版本:


12.框架底层如何解决了tableView卡顿问题:

12.1.设置最大并发数

12.2.只下载当前页cell图片,而非全部下载

12.3.数据的三级缓存(内存,沙盒)

12.4.降低网络请求次数

上一篇 下一篇

猜你喜欢

热点阅读