2011年06月20日
ブラウザのキャッシュ問題
あるサイトを始めて訪問した時と、2度目以降に訪問した時、
それぞれの表示時間を比較すると、
後者の方がスムーズに表示することがある。
これがブラウザのキャッシュ機能。
そのページに埋め込まれた画像を毎回読み直すのではなく、
最初に読んだ時に自身のパソコンにその画像を格納しておき、
次回のアクセス時に、自分のパソコンに格納してある画像を使う。
そうすることで、アクセスする情報量が減るし、
何よりアクセスする手間を省けるので表示が速い。
通常この機能は、利用者側は意識することは無く利用できる。
しかしこれ、便利なだけかと思うとそうでもなくて、
時として、厄介者だったりする。
それは、更新が反映されてなかったりすること。
よくあるのはHTMLはそのままで、
画像だけ後から差し替えた場合。
キャッシュされた古い画像を表示してしまい、
新しい画像が表示されないことがある。
◇HTMLの場合は以下を追加
◇Perlの場合は以下を追加
◇PHPの場合は以下を追加
上記はブラウザやそのバージョン
サーバの設定などで、
必ずしも有効じゃなかったりします。
それぞれの表示時間を比較すると、
後者の方がスムーズに表示することがある。
これがブラウザのキャッシュ機能。
そのページに埋め込まれた画像を毎回読み直すのではなく、
最初に読んだ時に自身のパソコンにその画像を格納しておき、
次回のアクセス時に、自分のパソコンに格納してある画像を使う。
そうすることで、アクセスする情報量が減るし、
何よりアクセスする手間を省けるので表示が速い。
通常この機能は、利用者側は意識することは無く利用できる。
しかしこれ、便利なだけかと思うとそうでもなくて、
時として、厄介者だったりする。
それは、更新が反映されてなかったりすること。
よくあるのはHTMLはそのままで、
画像だけ後から差し替えた場合。
キャッシュされた古い画像を表示してしまい、
新しい画像が表示されないことがある。
◇HTMLの場合は以下を追加
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT">
◇Perlの場合は以下を追加
print "Content-type: text/html\n";
print "Pragma: no-cache\n";
print "Cache-Control: no-cache\n";
print "Expires: Thu, 01 Dec 1994 16:00:00 GMT\n\n";
◇PHPの場合は以下を追加
header("Content-Type: text/html; charset=文字コード");
header("Expires: Thu, 01 Dec 1994 16:00:00 GMT");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
上記はブラウザやそのバージョン
サーバの設定などで、
必ずしも有効じゃなかったりします。
Posted by 大樹直人 (naohito ooki) at 18:18│Comments(0)
│コンテンツとアプリその他