画像がアップロードされておらず、古い画像がまだ存在しているとユーザーが報告するという問題があります。よく見ると、新しいイメージがあり、古いイメージと同じ名前が付いています。アップロードで行うことは、SEOの目的で画像の名前を変更することです。画像を削除すると、古いインデックスが使用可能になり、再利用されます。したがって、同じイメージ名を持ちます。
ブラウザにそのキャッシュを使用しないように指示する方法はありますか?
より良い答えは、イメージの名前をまったく新しいものに変更することです。私はそれに取り組みますが、当面は大きな問題に取り組む間、迅速な解決策になります。
任意の一意の番号(または時間、バージョン番号など)をクエリ文字列に追加します。
<img src="image.png?80172489074" alt="a cool image" />
URLが異なるため、これにより新しいリクエストが発生します。
硬いです。本当に画像をキャッシュしたいのですが、新しい画像が利用可能になったらキャッシュしたくありません:
ソリューション?次の2つのオプションを考えることができます。
現在の日時を画像srcに追加します。
<img src="yourImage.png?v=<?php echo Date("Y.m.d.G.i.s")?>" />
http-equiv
in <meta>
タグは、ブラウザにキャッシュを使用しないように指示します(または、さらに適切な方法でキャッシュを使用します)が、適切なhttp cache
ヘッダーを送信するようにサーバーを構成することをお勧めします。 キャッシュに関する記事 をご覧ください。
それでも、一部のブラウザはhttp
標準のすべてをサポートしていないかもしれませんが、私はそれが進むべき道だと信じています。
in PHPこのトリックを使用できます
<img src="image.png?<?php echo time(); ?>" />
Time()関数は、現在のタイムスタンプを表示します。すべてのページの読み込みは異なります。そのため、このコードはブラウザを欺きます。別のパスを読み取り、ユーザーが前回サイトにアクセスしたために画像が変更されたと「考え」ます。また、キャッシュを使用する代わりに、再ダウンロードする必要があります。
ランダムに行きます。乱数を使用して、画像ファイル名を追加するだけです。
<img src="image.jpg?<?=Rand(1,1000000)?>">
hTTPヘッダーを使用してキャッシュの動作を制御できます。
過去にexpiresヘッダーを設定すると、ブラウザはキャッシュバージョンを使用しなくなります。
Expires: Sat, 26 Jul 1997 05:00:00 GMT
[〜#〜] rfc [〜#〜] で詳細を確認できます。
私のお気に入りのソリューションPHP:
<img src="<?php echo "image.jpg" . "?v=" . filemtime("image.jpg"); ?>" />
ファイルを変更するたびに、ファイルの新しいバージョンが「作成」されます
ブラウザーとサーバー間で交換されるデータを見ると、ブラウザーがHTTP HEAD画像のリクエストを送信していることがわかります。結果には変更時間(実際の画像データではありません)。サーバー上で画像が変更され、ブラウザが再度画像をダウンロードする必要がある場合は、この時間が変更されることを確認してください。
PHPでは、乱数または現在のタイムスタンプを送信できます。
<img src="image.jpg?<?=Date('U')?>">
または
<img src="image.jpg?<?=Rand(1,32000)?>">