我正在开发一个有新闻提要的 iPhone 应用程序。这个新闻提要是从我编写的 JSON Web 服务中提取的(目前在我笔记本电脑上的 MAMP 上)。
无论如何,我使用 MySQL DB 来存储对我的图像的引用,这些图像存储在 apache 文件系统中。
我以一种非常特殊的方式存储它们,这就是我存储它们的方式:
完整图片:ng_(postid)_(seqid)
拇指:tng_(postid)_(seqid)
PostID 是分配给每个新闻帖子的唯一 ID。
SeqID 是仅对该新闻帖子的照片唯一的 ID。
我可能没有说得很清楚......例如:
第一篇文章中的图像文件可能如下所示
ng_1_1.jpg
ng_1_2.png
ng_1_3.jpg
第二篇文章的图像文件可能如下所示
ng_2_1.jpg
ng_2_2.png
ng_2_3.gif
到目前为止,这一直很好,但是我试图看看如果我删除了一个帖子,然后在它的位置重新创建了一个会发生什么?
假设我们有一个名为“Old Post”的帖子,它有 2 张图片,postid 为 7。
它的图像可能如下所示:
ng_7_1.jpg
ng_7_2.jpg
假设我们删除了该帖子,然后创建了一个新帖子,其中包含三张图片,称为“新帖子”。
它的图像将如下所示:
ng_7_1.jpg
ng_7_2.jpg
ng_7_3.jpg
现在,问题来了……如果设备查看了已删除的旧帖子,然后查看了这个新帖子,他们将看到前两张图像是来自 OLD POST 的图像。不是新的。
为什么?SDWebImage 认为是因为 URL 相同,因此决定从磁盘中提取缓存的图像。它甚至不显示缓存的版本,然后检查图像是否已更新。
所以,我想出了两种可能的解决方案:
- 在显示缓存版本后,不知何故让 SDWebImage 检查在线图像
- 在我的 JSON 中传递一个键,告诉我的应用程序擦除 SDWebImage 的缓存(必要时)
所以,我的问题是,你将如何删除 SDWebImage 的缓存,或者在显示缓存版本后让它检查服务器?