- PR -

【fileupload】ブラウザで画像ファイルが更新されない

投稿者投稿内容
まほ
常連さん
会議室デビュー日: 2004/07/30
投稿数: 23
投稿日時: 2005-07-27 12:01
ogeretyouさん

検証される時、IEのキャッシュは毎回クリアされていたでしょうか?
IEだとno-cacheなど指定してもダメとのことですが、IEにキャッシュされている状態のままであれば結局はサーバーに要求を出しませんから、毎回キャッシュクリアして検証されることをお薦めします。

すでにそうされているならスミマセン
ogeretyou
会議室デビュー日: 2004/06/14
投稿数: 18
投稿日時: 2005-07-28 01:29
みなさん、どうもありがとうございました!
一応、問題は解決しました。

まず、
まほさんのアドバイスにある、

「最初にIEのキャッシュをクリアしておく」

について、キャッシュをクリアしてアクセスしてみましたが、
やはりダメでした…

次に、
あるサイトで、

「Expires: 0 とか(-1とか)書いても,
Last-Modifiedが設定されていてかつ変更がないとキャッシュを読むので,
読み込ませたければ Last-Modified をちゃんと更新すること」

とあったので、
昨日実装したServletFilterに

httpResponse.setDateHeader("Last-Modified", cal.getTime().getTime());

を追加してみましたがダメでした…

続いて、
かつのりさんからアドバイスのあった、

「<img src="hoge.jpg?151232312">」

のようにイメージタグのURLにGETパラメータを動的に付加してみたところ、
キャッシュを読み込まず正常稼動を確認しました。
(ちなみに、「<img src="hoge.jpg?">」ではキャッシュされてしまいました)」

==============================================================
・キャッシュは"ファイル名"ではなく、"URL"で行われる
・imgタグのURLで画像ファイルにGETパラメータを設定、とかできる
(GETパラメータ自体は無視される? -> 表示に支障は無い)
==============================================================

動的生成されたURLで画像自体はキャッシュされてしまいますが、
今回は該当の画像表示のimgタグ全てに上記のような実装を行うことで対応するつもりです。

また、今回は試していないのですが、
Apacheのmodule_headerにて対応する方法も有効かもしれません。
自分の思い込みでは、
「Apacheのmoduleで設定するとコンテンツ全てに対してno-cacheを設定することになる」
と思ったのですが、もしかしたら、

/webapp/images/nocasheimages/*

のような指定方法でno-cacheにするURL指定できる、、、んでしょうか
(すみません未確認です。確認できたらこのスレッドを掘り起こして自己レスします。)



今回のまとめ

・HTTPヘッダの指定でPragma,Cache-Control等の指定をしても、
ブラウザによってキャッシュされてしまうことがある(?)



なんとなく腑に落ちない感じが残りますが、目的は達成することができました。
みなさん、どうもありがとうございます。

スキルアップ/キャリアアップ(JOB@IT)