原文链接(英文):git
https://github.com/rs/SDWebImage/wiki/How-is-SDWebImage-better-than-X%3Fgithub
自从iOS5.0以后,NSURLCache 已经加入了硬盘缓存操做,那么SDWebImage对比朴实的NSURLRequest有什么优点呢?缓存
NSURLCache 在iOS5以后加入了未加工的HTTP返回值的内存和闪存缓存。每一次缓存查找命中,app都会将原生的数据转换成UIImage。这种操做须要一些额外的解析操做:HTTP数据的解码、内存拷贝等等。app
另外一方面,SDWebImage 将UIImage缓存到内存,可是会将通过压缩和解码的图片存入闪存。UIImage就像用NSCache存入内存中同样,没有额外的内存复制,并且能够在你的app须要内存的时候腾出内存空间。异步
另外,在你第一次在UIImageView中使用UIImage的时候,主线程上的image解压操做会被SDWebImageDecoder转移到后台去。性能
最后,SDWebImage 能够彻底避免复杂、错误配置的HTTP缓存通讯,这极大的加速了缓存查找。spa
AFNetworking也在UIImageView中加入了类似的类,那SDWebImage 是否是仍有用武之地?线程
AFNetworking 并无针对闪存的缓存操做而是仅仅依赖于系统的表现。前一个问题的答案回答了这个问题。同时,AFNetworking 也没有图片的后台解压操做。另外AFNetworking 没法保证一样的URL不会被下载数次。code
假如你已经使用了AFNetworking ,仅仅须要一个比较简单的异步图片加载功能类,对性能和内存使用并无过高要求的话,AFNetworking 的UIImageView 类应该能知足你的需求。图片
额外阅读:SDWebImage缓存图片的机制