您的位置:首页 > 其它

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

2014-10-10 10:00 281 查看
原文连接(英文):

https://github.com/rs/SDWebImage/wiki/How-is-SDWebImage-better-than-X%3F

自从iOS5.0之后,NSURLCache 已经加入了硬盘缓存操作,那么SDWebImage对比朴实的NSURLRequest有什么优势呢?

NSURLCache 在iOS5之后加入了未加工的HTTP返回值的内存和闪存缓存。每一次缓存查找命中,app都会将原生的数据转换成UIImage。这种操作需要一些额外的解析操作:HTTP数据的解码、内存拷贝等等。

另一方面,SDWebImage 将UIImage缓存到内存,但是会将经过压缩和解码的图片存入闪存。UIImage就像用NSCache存入内存中一样,没有额外的内存复制,而且可以在你的app需要内存的时候腾出内存空间。

另外,在你第一次在UIImageView中使用UIImage的时候,主线程上的image解压操作会被SDWebImageDecoder转移到后台去。

最后,SDWebImage 可以完全避免复杂、错误配置的HTTP缓存通信,这极大的加速了缓存查找。

AFNetworking也在UIImageView中加入了相似的类,那SDWebImage 是不是仍有用武之地?

AFNetworking 并没有针对闪存的缓存操作而是仅仅依赖于系统的表现。前一个问题的答案回答了这个问题。同时,AFNetworking 也没有图片的后台解压操作。另外AFNetworking 无法保证同样的URL不会被下载数次。

假如你已经使用了AFNetworking ,仅仅需要一个比较简单的异步图片加载功能类,对性能和内存使用并没有太高要求的话,AFNetworking 的UIImageView 类应该能满足你的需求。

额外阅读:SDWebImage缓存图片的机制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: