Управление изменениями изображений на сервере с 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 неделя.