私はニュースフィードを持つ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
2 番目の投稿の画像ファイルは次のようになります。
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
その投稿を削除し、その後、3 つの画像を含む「新しい投稿」と呼ばれる新しい投稿を作成したとします。
画像は次のようになります。
ng_7_1.jpg
ng_7_2.jpg
ng_7_3.jpg
ここで問題が発生します...デバイスが削除された古い投稿を表示し、次にこの新しい投稿を表示すると、最初の 2 つの画像が OLD POST の画像として表示されます。新しいものではありません。
なんで?SDWebImage は、URL が同一であると判断し、キャッシュされた画像をディスクから取得することを決定します。キャッシュされたバージョンも表示せず、画像が更新されているかどうかを確認します。
したがって、これには2つの可能な解決策があることがわかりました。
- キャッシュされたバージョンを表示した後、どういうわけかSDWebImageを取得してオンライン画像を確認します
- JSON でキーを渡し、アプリに SDWebImage のキャッシュを消去するように指示します (必要な場合)。
では、私の質問は、SDWebImage のキャッシュを削除したり、キャッシュされたバージョンを表示した後にサーバーをチェックしたりするにはどうすればよいですか?