私はニュースフィードを持っているiPhoneアプリで作業しています。このニュースフィードは、私が書いたJSON Webサービス(現在私のラップトップのMAMPに住んでいる)から引き出されています。SDWebImageキャッシュを消去します
とにかく、MySQLデータベースを使用して画像への参照を保存します。この画像は、Apacheファイルシステムに保存されています。
私は非常に特定の方法でそれらを格納し、これは私がそれらを格納する方法である:
フルイメージ:ng_(postid)_(seqid)
親指:tng_(postid)_(seqid)
PostIDは、すべてのニュースポストに割り当てられている固有のIDです。 。
SeqIDは、そのニュース投稿の写真で一意のIDです。
私はおそらく非常に明確...たとえば作りませんでした:
最初の投稿内の画像ファイルは、第2のポストのための画像ファイルは次のようになります。この
ng_1_1.jpg
ng_1_2.png
ng_1_3.jpg
のようになります。この
ng_2_1.jpg
ng_2_2.png
ng_2_3.gif
これまでは素晴らしいことでしたが、投稿を削除してその場所に再作成すればどうなるか見てみましたか?
のは、我々は次のようになります7.
それの画像のpostidで、2枚の画像を持っている「オールドポスト」と呼ばれるポストを、持っているとしましょう:
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のキャッシュを削除する方法、またはキャッシュされたバージョンを表示した後にサーバーをチェックすることですか?
ありがとう。もともと私はそれがMySQL自動増分IDを使用するように設計しようとしていました。問題は、それが生成する次のIDをどのように「予測する」ことができるかということでした。 ATM私は次のクエリ 'SELECT max(postid)FROM TABLE;を使用していますが、次の挿入時にそれをインクリメントしていますが、MySQLがどのようにしているのか分かりません。 MySQLは常に、以前に生成されたものより1つ高い値を生成します。この問題を解決する次のMySQL IDを予測する方法を教えていただけたら:) –
次のID btwを計算しなければならない理由は、DBに挿入する前に私のファイルに名前を付けるのに使えるからです。 –
OK I次のIDを取得するには、http://stackoverflow.com/questions/2251463/mysql-php-how-to-get-auto-increment-field-value-before-inserting-data/2251486#2251486を使用します(トランザクション)、私は私のキャッシュ/ IDの問題を解決するはずです –