Я работаю над приложением для iPhone, в котором есть лента новостей. Эта новостная лента взята из написанного мной веб-сервиса JSON (в настоящее время я использую MAMP на моем ноутбуке).
В любом случае, я использую базу данных MySQL для хранения ссылок на мои изображения, которые хранятся в файловой системе apache.
Я храню их очень особым образом, и вот как я их храню:
Полные изображения: ng_(postid)_(seqid)
Превью: tng_(postid)_(seqid)
PostID - это уникальный идентификатор, назначаемый каждому сообщению новостей.
SeqID - это идентификатор, который уникален только для фотографий этого сообщения.
Я, наверное, не очень ясно выразился ... пример:
Файлы изображений в первом посте могут выглядеть следующим образом
ng_1_1.jpg
ng_1_2.png
ng_1_3.jpg
Файлы изображений для второго поста могут выглядеть следующим образом
ng_2_1.jpg
ng_2_2.png
ng_2_3.gif
До сих пор это работало отлично, но я пытался понять, что произойдет, если я удалю сообщение и создаю его заново?
Допустим, у нас есть пост «Старая почта», в котором есть 2 изображения с позицией 7.
Это изображения могут выглядеть так:
ng_7_1.jpg
ng_7_2.jpg
Допустим, мы удалили эту запись, а затем создали новую, которая имеет три изображения и называется «Новая запись».
Это изображения будут выглядеть так:
ng_7_1.jpg
ng_7_2.jpg
ng_7_3.jpg
Теперь возникает проблема ... Если устройство просмотрело старый пост, который был удален, а затем просмотрело этот новый пост, они увидят первые два изображения как изображения со СТАРОГО ПОСТА. Не новые.
Почему? SDWebImage считает, что URL-адрес идентичен, и поэтому решает извлечь кэшированное изображение с диска. Он даже не отображает кэшированную версию, а затем проверяет, обновлено ли изображение.
Итак, я разработал два возможных решения этой проблемы:
- Каким-то образом получить SDWebImage, чтобы проверить изображение в сети, после отображения кэшированной версии
- Передайте ключ в моем JSON, чтобы сказать моему приложению, чтобы он стер кеш SDWebImage (при необходимости)
Итак, мой вопрос: как бы вы удалили кеш SDWebImage или заставили его проверить сервер после отображения кэшированной версии?