005 [翻译]SDWebImage和AFNetworking及原生缓存策略的比较

原文链接(英文):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缓存图片的机制

相关文章
相关标签/搜索