kikukawa's diary

都内で活動するシステムエンジニアが書いてます。 興味を持った技術やハマったポイント、自分用メモをつけてます。 最近はweb中心

IEに画像をキャッシュされる

IEの画像表示ではまり

編集画面(画像の登録)
確認画面(画像のプレビュー)画像のファイル名は一定の規則にする
戻るボタンで再度編集画面で画像を選択しなおす
再度確認画面で画像のプレビュー

以上のような動きをしたいが、画像を選択しなおして、プレビューさせると前に選択していた画像が表示される。ただし、IEの更新ボタンをクリックすると最新の画像が表示される。

キャッシュの問題だと思ったので、キャッシュを無効にする設定をいれた

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> >

をHTML側に入れたが、キャッシュされる


header("Content-Type: text/html; charset=文字コード");

header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");

header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");

header("Cache-Control: no-cache, must-revalidate");

header("Cache-Control: post-check=0, pre-check=0", false);

header("Pragma: no-cache");


PHP側に入れたが、キャッシュされる

結局のところ、画像のキャッシュのHTMLファイルのキャッシュは別ものなので、これでは問題は解決しなかった。
画像のキャッシュの問題だということが分かったので、

PHP側でIMGタグを作っているところで、
<img src="hoge.jpg?yyyymmdd">
などとする。

yyyymmddのところは何でもよいが、アクセスするたびに変動するものがよい。

キャッシュされるのは防げないが、とりあえず最新の画像は表示されるようになった。