Управление изменениями изображений на сервере с SDWebImage IOS

Мне нравится этот похожий вопрос, но он слишком старый.

Я использую библиотеку SDWebImage для загрузки изображений с удаленного сервера.

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

Как я могу это сделать?

Заранее спасибо (извините за плохой английский)

2 ответа

Я сделал это с помощью:

[SDWebImage sd_setImageWithURL:[NSURL URLWithString:strURL] placeholderImage:[UIImage imageNamed:@"placeholder.png"] options:SDWebImageRefreshCached];

/ ** * Даже если изображение кэшируется, соблюдайте управление кэшем ответов HTTP и обновляйте изображение из удаленного расположения, если это необходимо. * Кэширование диска будет обрабатываться NSURLCache вместо SDWebImage, что приведет к небольшому снижению производительности. * Эта опция помогает работать с изображениями, изменяющимися по одному и тому же URL-адресу запроса, например, изображениями профиля API-графика Facebook. * Если кэшированное изображение обновляется, блок завершения вызывается один раз с кэшированным изображением и снова с финальным изображением. * * Используйте этот флаг, только если вы не можете сделать ваши URL статичными с параметром встраивания кэша встраивания. */

Сегодня вечером я просто занимаюсь этим исследованием, и, основываясь на текущей реализации SDWebImage, похоже, что нет "встроенного" способа использовать запрос условного GET (etag или date) на сервер для проверки обновлений.

Сейчас я исследую способ создания уникального URL-адреса, чтобы при обновлении версии образа сервера добавлялся либо хеш, либо версия в конце. Что-то вроде:

http://example.com/myimage.png?v=2

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

В противном случае вам придется настроить постоянное значение cacheMaxCacheAge в SDImageCache.m проверять чаще, чем его значение по умолчанию 1 неделя.

Другие вопросы по тегам