3

ネットワークリクエストの繰り返しを避けるために、ユーザーのブラウザに画像をキャッシュしています。ただし、これらのイメージがサーバーから削除され、新しいイメージが同じ名前で配置される場合があります。

これらの新しい画像をユーザーに提供したいのですが、ブラウザーにそのように指示する方法がわかりません。リクエストを送信していません(明らかに、それがキャッシュされた目的で使用されていました)。

グーグルの結果はそれができないと言っています。そうですか?

4

2 に答える 2

3

ファイルがブラウザにキャッシュされている場合、ファイルは要求されません。したがって、それを更新するためのディレクティブを送信することはできません。でも君ならできる:

  • ファイル名を変更する
  • バージョン番号を追加するimag.jpg?v=5
  • 画像が頻繁に変更される場合は、有効期限を短くしてください

私は個人的に2番目のオプションを使用します。アプリケーション構成ファイルでバージョン番号を定義します。その後、デザインを変更するときにバージョン番号を変更でき、すべての画像/ css/jsが更新されます。

define('VERSION_NUMBER', '2.1')

次に、ビューで定義を使用します。

<img src="image.jpg?v=<?php echo VERSION_NUMBER;?>" />
于 2013-03-02T11:47:18.580 に答える
0

HTTPを使用してキャッシュを制御する高度な方法はたくさんあります。一般的なメカニズムは、指定された有効期限の後に画像を再チェックするようにブラウザに指示することです。画像全体を要求するのではなく、ブラウザはなどのヘッダーを送信If-Modified-Sinceし、サーバーは応答する304 Not Modifiedか、新しい画像を送信することができます。

正確にこれを行う方法は、画像を提供する方法によって異なります。ファイルシステムからそれらを提供するためにApacheを使用しているだけの場合は、mod_expiresモジュールを調べてください。

「HTTPキャッシング」を検索すると、さまざまな手法が見つかるはずです。できないことの1つは、サーバー上で変更されたときに何かをキャッシュ解除するようにブラウザーに積極的に指示することです。これは、ブラウザーからの要求にのみ応答できるためです。

于 2013-03-02T14:01:46.030 に答える