画像のキャッシュを無効にする方法



0   名前: コーイチ : 2007/07/11(水) 02:44  ID:zA9Lx7iU sub-bK
サーバーサイドのWEBアプリケーションとJavaScriptの連携で画像のアップロード
と更新の処理ができるシステムを作っていますがAJAX風に画面の移動無しに処理を行っています。
このとき新規アップロードは問題ないのですが、ファイルを更新した時
(画像ファイルをアップロードして既存画像ファイルを上書きした時)
DOMで新たにimgタグを生成して表示してもキャッシュで前の画像が表示されてしまいます。

なんとか新しい画像の方を表示したいのですが、JavaScriptで
キャッシュを無効化したり画像を再読み込みさせることはできないでしょうか?

1   名前: 匿名 : 2007/07/11(水) 02:44  ID:DER3bIxB sub-Cz
JavaScript 側でやらなあかんのですか? ExpiresActive とか If-Modified-Since 辺で検索しても幸せになれませんか?

まあ一応、リクエスト時に Date オブジェクトの時間値をクエリに付けるという技もあります。

2   名前: コーイチ : 2007/07/11(水) 02:44  ID:zA9Lx7iU sub-bK
Cache-ControlとExpires ヘッダーはhtaccessで試してみたのですがどうも画像ファイルで
うまく動作してくれないようでした、ブラウザ間で動作に違いがあったように記憶しています。
画面の移動があればなんとか機能してくれたのですが…innnerHTML を書き換える方法ではうまくいきませんでした。
改めて検索してみたところ、同じようにこのあたりのキャッシュ制御ヘッダーが画像ファイルでうまく働いていない事例がいくつかヒットしました。


>まあ一応、リクエスト時に Date オブジェクトの時間値をクエリに付けるという技もあります。
手っ取り早くて有効そうです。
コレを試してみたいと思います、アリガトウございます。

3   名前: 匿名 : 2007/07/11(水) 02:44  ID:AiQYbXzs sub-Cz
http://www.semblog.org/msano/archives/000386.html
http://espion.just-size.jp/archives/05/132150002.html

4   名前: コーイチ : 2007/07/11(水) 02:44  ID:zA9Lx7iU sub-bK
Date オブジェクトの時間値をクエリに付けるの手で解決したので良いのですが、
If-Modified-Since ではやはり私の環境では無理のようでした。
XMLHttpRequestがキャッシュを拾ってしまうという質問ではなくて
innerHTMLで書き換えたHTML内にimgタグがある場合このimgタグで表示される画像が
もとのHTMLのimgタグで表示されたものと同じになってしまうという内容でした。

私の実験方法が不適切だったかもしれません、
解決を見たのでこれ以上私は深追いはしませんが一応動作の報告まで

一覧へ戻る