最小限の例を考えてみましょう: php を使用すると、テキストを入力するフォームがあり、テキストの画像が生成されます。その後、テキストを変更して更新すると、キャッシュされていると思われるため、新しい画像が表示されません。更新時にこの 1 つの画像ファイルをキャッシュから自動的に削除する方法はありますか?
4 に答える
これは、クエリにランダムな文字列またはタイムスタンプを追加することで頻繁に処理されます。
すなわち<img src="/images/image.jpg?timestamp=1357571065" />
典型的な解決策は、 ceejazoz がこの回答で提供したものです。リクエストパラメーターとして追加された追加のタイムスタンプです。そうすれば、URL は毎回異なるため、キャッシュやプロキシはキャッシュされたバージョンを配信しません。
ただし、それは機能しますが、それは醜い回避策です。
きれいな解決策は、画像を配信するときにヘッダーを指定することです。これらのヘッダーは、画像がキャッシュされないように注意します。それがヘッダーの目的です。つまり、リソースの使用方法を定義します。欠点: 静的イメージを配信するために使用される今日の http サーバーのすぐに使える構成では、そのようなヘッダーを指定することはできません。すべてのケースの 99,99% では意味がないからです。したがって、独自のメカニズムを作成する必要があります。特に難しいことではありませんが、それでも努力は必要です。上記の回避策を使用すると、確かに簡単で手間がかかりません.
そして、あなたの実際の質問に正確な答えを出すために: 通常、単一のキャッシュされたオブジェクトから「the」キャッシュを消去することはできません。それは実際には、あなたが話しているキャッシュによって異なります。開発中 (テスト中) にブラウザーのキャッシュだけである場合は、「ディープ リロード」を行います (ブラウザーに応じて、CTRL-SHIFT-R または CTRL-F5 など)。ただし、これにより、現在のページのキャッシュされたすべてのオブジェクトがクリアされます。サーバー側のキャッシュやその間のプロキシをクリアする簡単な方法はありません。
おそらくユリウス時間 + 乱数を含むクエリ文字列を画像に追加します。たとえば、画像の URL は //.../myimage.jpg?112233445566-954967254 になります。
キャッシュを再検証できます
header("Cache-Control: no-cache, must-revalidate");