ネットワークリクエストの繰り返しを避けるために、ユーザーのブラウザに画像をキャッシュしています。ただし、これらのイメージがサーバーから削除され、新しいイメージが同じ名前で配置される場合があります。
これらの新しい画像をユーザーに提供したいのですが、ブラウザーにそのように指示する方法がわかりません。リクエストを送信していません(明らかに、それがキャッシュされた目的で使用されていました)。
グーグルの結果はそれができないと言っています。そうですか?
ネットワークリクエストの繰り返しを避けるために、ユーザーのブラウザに画像をキャッシュしています。ただし、これらのイメージがサーバーから削除され、新しいイメージが同じ名前で配置される場合があります。
これらの新しい画像をユーザーに提供したいのですが、ブラウザーにそのように指示する方法がわかりません。リクエストを送信していません(明らかに、それがキャッシュされた目的で使用されていました)。
グーグルの結果はそれができないと言っています。そうですか?
ファイルがブラウザにキャッシュされている場合、ファイルは要求されません。したがって、それを更新するためのディレクティブを送信することはできません。でも君ならできる:
imag.jpg?v=5
私は個人的に2番目のオプションを使用します。アプリケーション構成ファイルでバージョン番号を定義します。その後、デザインを変更するときにバージョン番号を変更でき、すべての画像/ css/jsが更新されます。
define('VERSION_NUMBER', '2.1')
次に、ビューで定義を使用します。
<img src="image.jpg?v=<?php echo VERSION_NUMBER;?>" />
HTTPを使用してキャッシュを制御する高度な方法はたくさんあります。一般的なメカニズムは、指定された有効期限の後に画像を再チェックするようにブラウザに指示することです。画像全体を要求するのではなく、ブラウザはなどのヘッダーを送信If-Modified-Since
し、サーバーは応答する304 Not Modified
か、新しい画像を送信することができます。
正確にこれを行う方法は、画像を提供する方法によって異なります。ファイルシステムからそれらを提供するためにApacheを使用しているだけの場合は、mod_expires
モジュールを調べてください。
「HTTPキャッシング」を検索すると、さまざまな手法が見つかるはずです。できないことの1つは、サーバー上で変更されたときに何かをキャッシュ解除するようにブラウザーに積極的に指示することです。これは、ブラウザーからの要求にのみ応答できるためです。