美文网首页
SDWebImage图片缓存相关问题汇总

SDWebImage图片缓存相关问题汇总

作者: steven_join | 来源:发表于2018-02-25 15:58 被阅读0次

使用SDWebImage可以去加载远程图片,而且还会缓存图片,下次请求会看一下是否已经存在于缓存中,如果是的话直接取本地缓存,如果不是的话则重新请求。它的大概架构:最外层是一个SDWebImageManager单例工具类管理另外两个单例类,一个是作下载处理的SDWebImageDownloader,它管理多个下载操作SDWebImageDownloaderOperation,一个作缓当我们需要下载图片时,先让SDImageCache从缓存中找,如果找不到就异步从硬盘中读取图片,如果读取到就将图片缓存到内存并回调给SDWebImageManager,如果找不到就让SDWebImageDownloader 执行下载操作,在 SDWebImageDownloaderOperation 单个图片的下载操作中利用 NSURLConnection 执行下载,实现代理监听下载进度等,下载完成后交给SDWebImageDecoder 图片异步解码,完成后回调给SDWebImageDownloader,再回调给SDWebImageManager,再让SDImageCache去执行内存和磁盘(异步)的缓存操作处理的SDImageCache,

1、下载图片的线程执行完后回调

- (void)sd_setImageWithURL:(NSURL *)url completed: (SDWebImageCompletionBlock)completedBlock;

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder completed:(SDWebImageCompletionBlock)completedBlock;

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options completed:(SDWebImageCompletionBlock)completedBlock;

2、下载图片并获取图片下载进度 progressBlock

- (void)sd_setImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;

3、先从本地缓存中查找请求的图片,如果有先用本地图片占位,再从服务器请求下载图片

- (void)sd_setImageWithPreviousCachedImageWithURL:(NSURL *)url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock;

4、下载一组动画图片,并自动播放动画(arrayOfURLs为一组图片的地址数组)

- (void)sd_setAnimationImagesWithURLs:(NSArray *)arrayOfURLs;

5、取消当前下载

- (void)sd_cancelCurrentImageLoad;

6、取消下载一组动画图片

- (void)sd_cancelCurrentAnimationImagesLoad;

7、设置是否显示活的指示器以及样式

注意:必须在请求下载图片之前给UIImageView设置!不然无法显示!

- (void)setShowActivityIndicatorView:(BOOL)show;

- (void)setIndicatorStyle:(UIActivityIndicatorViewStyle)style;

SDWebImage中options 枚举介绍:

SDWebImageRetryFailed 失败后重试, 默认如果下载失败,这个url会被加入黑名单并且不会尝试再次下载,设置这个枚举会阻止把失败的url加入黑名单,不断尝试重新下载

SDWebImageLowPriority 延迟下载, 默认情况下,图片会在交互发生的时候下载(例如你滑动tableview的时候),这个枚举会禁止这个特性,导致的结果就是在scrollview减速的时候才会开始下载(也就是你滑动的时候scrollview不下载,你手从屏幕上移走,scrollview开始减速的时候才会开始下载图片)

SDWebImageCacheMemoryOnly 只在内存缓存

SDWebImageProgressiveDownload 渐进式下载,显示的图像是逐步在下载

SDWebImageRefreshCached 刷新缓存,有时本地图片更新后与服务器没有同步一致时可以使用(例如更新头像),专门处理相同url,但不同image的情况的

原因:默认情况下,SDWebImage会忽略Header中的缓存设置,将图片以url为key进行保存,url与图片是一一对应关系。所以请求同一个url时,SDWebImage会从缓存中取得图片。一般的情况下用此方法可以满足我们的应用要求,但是如果你请求同一个url,而这张图片在服务器端更新了,本地客户端再次请求时还是会返回缓存中的旧图片,例如加载头像类经常更新的图片时,就会出现头像不能更新的问题,由于url与图片一一对应,一种解决的办法是改变部分url地址方式实现更新,不过这种方法操作起来很复杂, 另一种将第三个参数设置为SDWebImageRefreshCached就可以实现图片更新操作了。

SDWebImageContinueInBackground 启动后台下载,app进入后台后继续下载

SDWebImageHandleCookies 处理存储在NSHTTPCookieStore中的cookie

NSMutableURLRequest.HTTPShouldHandleCookies = YES;

SDWebImageAllowInvalidSSLCertificates 允许使用无效的SSL证书,主要用于测试目的,在正式环境中慎用

SDWebImageHighPriority 优先下载

SDWebImageDelayPlaceholder 等待下载完成后再显示占位图片,延迟显示占位图片

SDWebImageTransformAnimatedImage 改变动画形象

SDWebImageAvoidAutoSetImage 下载完成后手动设置图片,默认是下载完成后自动放到ImageView上

相关文章

  • SDWebImage图片缓存相关问题汇总

    使用SDWebImage可以去加载远程图片,而且还会缓存图片,下次请求会看一下是否已经存在于缓存中,如果是的话直接...

  • iOS编程之缓存清除以及文件操作等

    1,SDWebImage图片缓存 这里简单讲解以下SDWebImage图片缓存大小计算以及清理缓存的方法 获取图片...

  • SDWebImage原理

    SDWebImage SDWebImage原理 核心类SDWebImageManager介绍 图片加载 图片缓存 ...

  • 在iOS中使用SDWebImage缓存图片

    正常使用SDWebImage缓存图片 在需要清除缓存的界面导入#import "SDWebImage/SDImag...

  • 解读SDWebImage

    SDWebImage是一个功能强大的图片缓存框架,可以实现网络图片加载和缓存。那么SDWebImage的缓存机制是...

  • SDWebImage知识点

    SDWebImage的缓存策略 SDWebImage 的图片缓存默认情况采用的是 Memory 和 Disk 双重...

  • 多线程03

    SDWebImage框架详解 下载图片并显示: 下载图片/显示图片/内存缓存/磁盘缓存 下载图片\内存缓存\磁盘缓...

  • 五、SDWebImage源码解析SDImageCache(一)

    SDImageCache是SDWebImage的缓存类,是SDWebImage的重要组成部分,主要提供图片的缓存,...

  • Error Domain=NSURLErrorDomain C

    一个小问题,使用SDWebImage缓存图片时报Error Domain=NSURLErrorDomain Cod...

  • 区分SDWebImage的三种缓存

    SDWebImage的三种缓存分为:内存图片缓存、磁盘图片缓存、内存操作缓存步骤如下1、先查看内存图片缓存,内存图...

网友评论

      本文标题:SDWebImage图片缓存相关问题汇总

      本文链接:https://www.haomeiwen.com/subject/qrurxftx.html