以前に、「IEでfavicon出ない問題」をPHPはさんで解決しました。しかし、favicon一杯あるページ(ココとか)では切なくなるほど遅くなります。
普通の画像だってあるだけリクエスト飛ぶのに何が違うのかと思ったんですが、よく考えたら普通の画像はブラウザにキャッシュされるので2回目からリクエスト飛ばないんですよね。PHP挟むと毎回フレッシュな画像が表示される。(悪い意味で)
要はPHPでもブラウザにキャッシュしてもらえばいいのカー。 PHPのデフォルトではご丁寧に(今回は邪魔だけど本来超嬉しいデフォルト設定)ブラウザにキャッシュされないようにヘッダを吐いてくれてるので、(p0t: 戻るボタン対策)それを切るだけで良かった。
session_cache_limiterのパラメータの細かい説明がマニュアルに見当たらなかったんですが、
- nocache—- ブラウザにキャッシュしないで(デフォルト)
- private—- ブラウザにキャッシュして
- public—- ブラウザとキャッシュサーバ(プロクシとか)にキャッシュして
だそうです。(via http://www.hizlab.net/app/portal.html)
<?php
<strong>session_cache_limiter('public');</strong>
header('Content-Type: image/x-icon');
echo file_get_contents($_REQUEST['favicon']);
?>
これで2回目から糞速い。