Есть ли большое преимущество в использовании SDWebImage по сравнению с AFNetworking для загрузки изображений?

SDWebImage утверждает, что AFNetworking не кэшировать само изображение, а только ответ HTTP, поэтому SDWebImage быстрее вызывает изображение из кэша и представляет его.

Если бы я хотел использовать исключительно AFNetworking, было бы такое утверждение, правда или нет, действительно заметным с точки зрения производительности? Это то, чего мне следует опасаться?


person Doug Smith    schedule 05.01.2014    source источник
comment
В хакерских новостях news.ycombinator.com/item?id=4237214 есть вопросы и ответы о SDWebImage VS AFNetworking.   -  person andyqee    schedule 11.03.2015


Ответы (3)


SDWebImage имеет гораздо больший контроль над кэшированием изображений. Он может кэшировать на диск или в память.

AFNetworking полагается на NSURLCache для сохранения изображений между запусками приложений (и это не очень надежно), но это здорово, если вам просто нужно кэшировать во время одного запуска.

Оба решения кэшируют объект UIImage в памяти на время существования приложения. Это важно, потому что кэширование представления NSData недостаточно быстро для плавной загрузки изображений при прокрутке табличного представления.

Резюме: решение AFNetworking проще и подходит для большинства случаев использования. Если вам нужен более точный контроль или кэширование диска, используйте SDWebImage вместо изменения реализации AFNetworking.

person Aaron Brager    schedule 05.01.2014
comment
SDWebImage очень удобен, особенно с прогрессивной загрузкой изображений. Но он основан на NSURLConnection (даже в последней версии 3.7.5), и мы знаем, что он устарел, начиная с iOS 9. NSURLSession существует уже более 3 лет. Удивительно, но SDWebImage до сих пор не перенесен на NSURLSession. См. SDWebImage: Миграция на NSURLSessions. AFNetworking 3.0 полностью основан на NSURLSession. Поэтому я думаю, что AfNetworking будет лучшим выбором, чем SDWebImage. - person Utsav Dusad; 07.05.2016

Я использовал оба:

SDWebImage намного быстрее, чем UIImage + AFNetworking.

В UITableViewCell вы можете увидеть существенную разницу в производительности. В AFNetworking ушло чертовски много времени, а код слишком длинный. SDWebImage намного быстрее и короче.

Используйте SDWebImage для повышения производительности изображения.

person coreDeviOS    schedule 28.11.2014
comment
Я уже использую AFNetworking для спокойной связи с сервером. Было бы эффективно использовать SDWebImage для изображений или достаточно AFNetworking? - person Utsav Dusad; 27.04.2016
comment
Да, производительность SDWebImage лучше, чем то, что я видел в AFNetworking. Если ваше приложение работает с большим количеством изображений, лучше используйте SDWebImage. - person coreDeviOS; 28.04.2016

Это неправда.

Если вы посмотрите на код, вы можете посмотрите, что категория UIImageView+AFNetworking кэширует UIImage (используя NSCache и urlRequest в качестве ключа). Однако кеш не записывается на диск.

person toasted_flakes    schedule 05.01.2014