[PHP-users 29341] PHPによる画像転送キャッシュ

Kazuhiro Kotsutsumi kotsutsumi @ xenophy.com
2006年 6月 6日 (火) 15:05:49 JST


いつも参考にさせていただいております。
Xenophy 小堤です。

PHPで画像を表示するということを行いたいのですが
下記のような状態で転送を行う処理をしたいと思っております。


1.hoge.gif にアクセスがきた場合、mod_rewriteにて
  images.php?file=hoge.gifが呼び出される。

2.表示用HTMLの中で<img src="hoge.gif" />
  の形でイメージ取得を設定する

3.images.phpではheaderでimage/gifを送信し、画像ファイルを
  読み込みprintして終了する。


これで、実際のhoge.gif自体がドキュメントルートになくても、転送表示が行え
ます。しかし、onMouseOverなどの処理をすると顕著に症状を確認できるのです
がIEの場合のみ、毎回サーバに画像を取得しに行ってしまうのです。

FireFox1.0.7/1.5やOpera8などでは、Apacheのログを見ても一度読み込んだ画像
はキャッシュされているようで、サーバへ再度アクセスされることがありません。

headerで200 OKが返却されたときにLast-Modifiedを送信するようにして、再度
アクセスがあった場合にIf-Modified-Sinceが存在し、ファイルが更新されてい
なければ304を返す(Not Modified)ようにも実装してみましたが、IEでは何度
も304としてアクセスし続けてしまいます。

これはIEの仕様なのでしょうか?それともFireFoxなどがただキャッシュしてく
れているだけで、本来キャッシュされないものなのでしょうか?

HTTPヘッダーについて、深い知識がまだないため追求しきれていませんが
こういったPHPでの画像転送におけるキャッシュについて、知識のある方がいら
っしゃいましたら上記の件についてご教授願います。


お忙しい中大変申し訳ございませんが
よろしくお願いいたします。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
Company      : 株式会社ゼノフィ - Xenophy CO., LTD.
Name         : 代表取締役社長
               小堤 一弘
Tel/Fax      : 03-3363-7607/03-3363-7607
Mail Address : kotsutsumi @ xenophy.com
H.P  Address : http://www.xenophy.com/
BLOG Address : http://blog.xenophy.com/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/



PHP-users メーリングリストの案内