解读SDWebImage图片缓存

SDWebImage是一个强大的图片缓存框架,采用Memory和Disk双重Cache机制。首次加载图片后,存储在内存和磁盘中。内存缓存优先查找,否则从磁盘加载。提供了多种加载选项,如内存优先、磁盘优先等。缓存时间默认为一周。当内存不足或应用进入后台时,会清理内存和磁盘缓存。磁盘缓存清理通过删除过期和最早创建的文件来控制空间。了解这些机制有助于优化图片加载和管理缓存。

SDWebImage_logo

SDWebImage是一个功能强大的图片缓存框架,可以实现网络图片加载和缓存。那么SDWebImage的缓存机制是如何实现的呢?缓存时间是多久?清除缓存的策略是怎样的?让我们带着这些问题,走进源码,解读SDWebImage。

SDWebImage提供一个UIImageView的分类 UIImageView+WebCache,用来加载和缓存来通关HTTP传输的图片资源。提供了缓存管理、异步下载、缓存校验等功能。

缓存机制

SDWebImage 的图片缓存采用的是 MemoryDisk 双重Cache机制,也就是二级缓存。SDWebImage的缓存机制可以简单概括为:第一次请求加载图片后将图片缓存在内存中,并通过md5加密将图片的url进行加密处理,加密处理后的值作为key,将图片存储在磁盘中。当再次加载图片时,先在内存缓存中寻找,如果内存中找不到图片,则在默认的磁盘中寻找,如果还是找不到,则再请求加载图片
在这里插入图片描述

核心类:

SDWebImageManager
SDImageCache
SDWebImageDownloader
SDWebImageDownloadOperation

缓存方法

下面通过一张框架图来解释SDWebImage的框架结构:
框架结构

最上层的UIImageView+WebCache这个类里面提供了一下几个方法来供我们进行网络图片加载等操作:
1. sd_setImageWithURL:

//图片缓存的基本代码
[self.imageView sd_setImageWithURL:imagePath];

2. sd_setImageWithURL: completed:

//用block 可以在图片加载完成之后做些事情
[self.imageView sd_setImageWithURL:imagePath completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) 
{
    NSLog(@"图片加载完成之后可以在这里做些事情");
}];

3. sd_setImageWithURL: placeholderImage:

/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值