many favicon

以前に、「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:&nbsp;image/x-icon');
echo&nbsp;file_get_contents($_REQUEST['favicon']);
?&gt;

これで2回目から糞速い。

画像にPHPでアクセス制限かけてるとことか(←アクセス制限はずしてどうする)(←いや、問題ないか)、mysqlのblobから画像出してるとことかもこれやると速くなるハズ。

Comments


Option