Использует ли SDWebImage как кэширование памяти, так и кэширование диска (при необходимости)? Если нет, то как мне справиться с этим?

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

Моя первоначальная стратегия заключалась в том, чтобы сохранить все UIImages в NSArray, но в конечном итоге это потребовало бы тонны памяти/ОЗУ.

Затем я подумал об использовании NSCache, который автоматически удаляет элементы, если использование памяти становится слишком большим. Моя проблема заключается в том, что после удаления элемента мне придется повторно загружать изображение в следующий раз, когда оно мне понадобится.

Кажется, моим лучшим решением было бы (и если я полностью упустил что-то лучшее, пожалуйста, скажите мне), чтобы сохранить их в решении в стиле NSCache, а когда NSCache удаляет элемент, сохранить его на диск. Поэтому, когда он понадобится в следующий раз, ему не нужно будет его перезагружать, даже если кеш удалил его, и он все равно будет быстрее получать его с диска, чем снова с сервера.

Мне интересно, используют ли такие библиотеки, как SDWebImage, которые, как я понимаю, используют кеш, поэтому изображения не загружаются несколько раз. — используйте такое решение, или они больше похожи на NSCache, где изображение просто исчезнет, ​​когда использование памяти будет слишком большим, и потребуется повторная загрузка. (Только, как только приложение завершит выполнение, я бы не хотел, чтобы оно больше оставалось на диске.)

Я смотрю на это совершенно неправильно? Должен ли я делать что-то совершенно другое?


person Doug Smith    schedule 14.04.2014    source источник


Ответы (1)


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

person Pete42    schedule 14.04.2014