首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SDWebImage 缓存策略

首先,SDWebImage 的图片缓存采用的是 Memory(内存) 和 Disk(硬盘) 双重 Cache 机制,SDImageCache 中有一个叫做 memCache 的属性,它是一个 NSCache...Disk Cache,也就是文件缓存SDWebImage` 会将图片存放到 NSCachesDirectory 目录中,然后为每一个缓存文件生成一个 md5 文件名, 存放到文件中。...如果下载失败, 会把失败的图片地址写入 failedURLs 集合,为什么要有这个 failedURLs 呢, 因为 SDWebImage 默认会有一个对上次加载失败的图片拒绝再次加载的机制。...也就是说,一张图片在本次会话加载失败了,如果再次加载就会直接拒绝,SDWebImage 这样做可能是为了提高性能。...Disk(硬盘)缓存清理策略:SDWebImage 会在每次 APP 结束的时候执行清理任务。 清理缓存的规则分两步进行。 第一步先清除掉过期的缓存文件。 如果清除掉过期的缓存之后,空间还不够。

1.4K10

SDWebImage 源码阅读(缓存)

SDWebImage 中,设计了两种缓存 1.SDMemoryCache:它继承自 NSCache 用来实现内存缓存 2.NSFileManager:使用文件的方式来实现磁盘缓存 先来看一下 SDImageCache...keys和values,所以当key或者value被deallocated的时候,所存储的实体也会被移除; weakCacheLock:它是一个锁,用来保证对weakCache操作时的线程安全,所以在对SDWebImage...dispatch_get_main_queue(), ^{ completionBlock(); }); } }); } 在SDWebImage...中我们可以对其缓存方式进行设置,比如不需要内存缓存缓存最大容量等,SDWebImage 为我们提供了一个专门配置的对象 @interface SDImageCacheConfig : NSObject...sd_setImageWithURL:url placeholderImage:placeholder options:options progress:nil completed:nil]; } 总结 SDWebImage

1.3K30
您找到你想要的搜索结果了吗?
是的
没有找到

利用SDWebImage清除内存缓存

https://blog.csdn.net/u010105969/article/details/53377679 我们在使用SDWebImage下载图片的时候会发现如果一个TableView上的单元格很多而且每个单元格上都有图片那么在上滑单元格的时候内存会越来越大...,因此我们必须想一个清除内存的方法,今天介绍的方法就是SDWebImage中的一个方法: [[SDImageCache sharedImageCache] clearMemory]; 此方法可以将利用...SDWebImage下载的图片从缓存中清除,注意是缓存中并不是沙盒中。...实际从缓存中清除图片方法在内存警告的时候SDWebImage会自动调用清除缓存方法,可内存警告实在有点难,不知道要等到内存多大的时候才会发生内存警告进而让SDWebImage自动清除缓存。...因此我们自己去清除缓存,至于在什么时候调用还要看需求。

2.5K30

iOS 图片加载框架SDWebImage详解

目的 在使用SDWebImage加载图片时,尤其是加载gif等大图时,SDWebImage会将图片缓存在内存中,这样是非常吃内存的,这时我们就需要在适当的时候去释放一下SDWebImage的内存缓存,才不至于造成...SDWebImage 提供了 UIImageView、UIButton 、MKAnnotationView 的图片下载分类,只要一行代码就可以实现图片异步下载和缓存功能。...SDWebImage 特点 提供 UIImageView, UIButton, MKAnnotationView 的分类,用来显示网络图片,以及缓存管理 异步下载图片 异步缓存(内存+磁盘),并且自动管理缓存有效性...SDWebImage 使用 1....问题 2:图片刷新问题:SDWebImage 在进行缓存时忽略了所有服务器返回的 caching control 设置,并且在缓存时没有做时间限制,这也就意味着图片 URL 必须是静态的了,要求服务器上一个

2.3K10

iOS缓存 NSCache详解及SDWebImage缓存策略源码分析你要知道的NSCache都在这里

接着,会通过源码讲解SDWebImage缓存策略。最后简要补充了第三方YYCache的实现思路。...countLimit,或,缓存中对象的总cost值大于totalCostLimit 程序进入后台后 收到系统的内存警告 SDWebImage缓存策略 在了解了NSCache的基本使用后,现在来通过SDWebImage...本节内容包括了GCD、NSOperation等多线程相关的知识,有疑问的读者可以查阅本博客iOS多线程——你要知道的GCD都在这里 以及 iOS多线程——你要知道的NSOperation都在这里 相关内容.../* SDWebImage真正执行缓存的类 SDImageCache支持内存缓存,默认也可以进行磁盘存储,也可以选择不进行磁盘存储 */ @interface SDImageCache : NSObject...SDWebImage的磁盘缓存使用的只有文件系统。 读了YYCache源码让我明白了,不能一味的迷信苹果为我们提供的类,为了追求更极致的性能需要做大量的对比试验来确定技术方案。

3.7K93

SDWebImage 图片下载缓存框架 常用方法及原理

功能:图片下载、图片缓存、下载进度监听、gif处理等等 项目地址:https://github.com/rs/SDWebImage 常见面试题: SDWebImage的最大并发数是多少?...图片的十六进制第一个字节.png SDWebImage 缓存图片命名规则? 为了防止名称重复,对其进行 md5 运算 默认下载的超时时长是多少?15秒 默认缓存的时间?...gif等文件需要把扩展名填上,png不需要 ---- 一、下载缓存 #import "UIImageView+WebCache.h"' 介绍:使用SDWebImage可以去加载远程图片,而且还会缓存图片...所以请求同一个url时,SDWebImage会从缓存中取得图片。...如果是在iOS上运行,SDImageCache 在初始化的时候会注册notification 到 UIApplicationDidReceiveMemoryWarningNotification 以及

2.9K40

深入源码理解YYCache 、SDWebImage、AFNetworking、NSCache 缓存方式与对比

/1605429 在之前的一篇文章iOS缓存 NSCache详解及SDWebImage缓存策略源码分析中详细讲解了NSCache的用法以及SDWebImage内存和磁盘缓存的源码分析,本篇文章将简要讲解...由于之前的一篇文章已经详细讲解了NSCache和SDWebImage缓存策略,本篇文章不再赘述,会简要介绍一下AFNetworking和YYCache的源码。...AFNetworking图片缓存AFAutoPurgingImageCache AFNetworking也提供了同SDWebImage一样的下载图片的功能,也提供了缓存这些图片的功能,但它只提供了内存缓存...到现在为止,我们已经熟悉了AFNetworking内存缓存SDWebImage内存缓存和YYCache的内存缓存的实现,SDWebImage内存缓存其实就直接使用了NSCache。...SDWebImage和YYCache的磁盘缓存最大的区别就是应用场景,SDWebImage存储的都是图片,图片一般都比较大,所以直接采用文件系统能够保证读性能,YYCache作为第三方库,需要缓存任意类型的对象

2.8K71

再看SDWebImage

https://blog.csdn.net/u010105969/article/details/61919148 干过iOS开发的都知道SDWebImage这个第三方库,大量的项目中也都用到了这个第三方库...(之前有一篇博客是介绍项目中如果使用了SDWebImage怎么利用SDWebImage清除缓存的图片,博客地址:http://blog.csdn.net/u010105969/article/details.../53377679) 在使用SDWebImage下载某张图片的时候该第三方库首先回去内存缓存中查看是否已经缓存过该图片,如果缓存过直接使用。...如果内存缓存中没有该图片就去沙盒缓存中查找该图片,如果有首先将该图片写入到内存缓存中,然后使用该图片。...如果沙盒缓存中也没有该图片,说明之前没有下载过该图片,那么就要进行网络请求下载该图片了,图片的下载是由NSURLConnection来做的。 SDWebImage工作流程图: ?

58930

SDWebImage源码分析 原

SDWebImage源码分析      每次读优秀的代码都是一次深刻的学习,每一次模仿,都是创造的开始!...——QQ 316045346 欢迎交流      SDWebImageiOS开发中非常流行的一个网络图片加载库,如果你观察其源码,会发现其中的文件非常多,虽然文件数很多,但是作者的代码结构和条理却是非清晰...SDWebImage的代码结构基本可以分为3块:应用层类别、核心功能类、工具类与类别。其中我们最常使用的是应用层的类别。例如UIImageView的图片加载,UIButton的图片加载等。...+ (nonnull CFStringRef)sd_UTTypeFromSDImageFormat:(SDImageFormat)format; 2、SDWebImageFrame     这个类是SDWebImage...1.缓存管理类SDImageCache     SDImageCache类负责所有网络图片数据的缓存,其从逻辑上分为两级缓存,内存缓存和硬盘缓存

95930
领券