Web サイトに表示される画像を編集するシステムを実装しました。
画像が編集されると、少なくとも画像を編集したユーザーに対して、サイトのすべてのページ (それが呼び出された場所) にその最新バージョンを表示したいと考えています。
現在、タイムスタンプを最後に追加するよりも、特定の画像のキャッシュをクリアするためのより良い方法を探しています。
<img src="myimage.jpg?01215654" alt="" />
なんで ?
たとえば、セッションシステムを使用して、画像パスの最後に常にタイムスタンプを追加することを想定しています。
ただし、セッションが期限切れになると (たとえば、ユーザーがサイトを離れ、数時間後に戻る)、画像の実際のパスが表示されます。
<img src="myimage.jpg" alt="" />
そして、ナビゲーターは古いイメージまたは最後のバージョンをランダムに表示します... Apache がキャッシュされているため:
- 古い画像としての myimage.jpg
- myimage.jpg?01215654 は誰もヒットしなかったため、新しいバージョンとして (新しいメディアとして読み込まれました)
制限事項
- たとえば、「myimage.jpg」から「myimage-v2.jpg」など、編集した画像のパスを変更できません。これで問題が解決する可能性があります...
- 画像はコントローラーから提供されず (PHP スクリプトから提供されません)、サーバー上のパスから直接ロードされます。
- JS でイメージ パスの末尾にタイムスタンプまたはバージョン文字列を追加するセッション システムを使用したくありません。
私が欲しいもの
「myimage.jpg」のキャッシュの有効期限が切れていると言いたいので、最後のバージョンを表示し、次の版まで通常どおりキャッシュします。したがって、編集後に「304変更」ではなく「200ステータス」で画像をロードしたいと思います。
注:画像が編集されると、キャッシュヘッダーを変更する方法がある場合、非表示のdivにJS(JQuery)を使用して再読み込みしますか?
私が望むのは、プロジェクトの制限を考慮して、編集された特定の画像のキャッシュヘッダーをクリアすることです。可能であれば、コントローラーから画像を提供せずにキャッシュディレクティブを使用することで可能ですか?