先日、会社で「Webサーバ側のほうで、クライアントにキャッシュを残させないように制御ができるか?」ということが話題になりました。使っているシステムでどうもブラウザ側にキャッシュがないので不思議に思ってそんな話題が出たようです。
まあ、HTMLタグとかで制御できそうなものだけど、実際はどうやるのかな・・・、と思って調べてみました。たぶん、googleでこんなワードで検索したらいけるだろう。。。
「Webサーバ 設定 クライアント キャッシュ 残さない」
あ、あったあった(^^)
http://blog.look-ss.jp/article.php/2008092600255048 のサイトが詳しいです。
HTMLのメタタグで制御するみたいですね。あとは画像ファイルとかまとめてやりたい場合、Apacheだとパラメータ指定で対処できるようですね。非常にわかりやすいです。
まあ、当たり前といわれれば当たり前ですけど、これはあくまでサーバ側がクライアント側にキャッシュをしないように依頼しているだけで、クライアント側(あるいは途中のプロキシ)でそれを無視するようなしくみがあった場合にはその限りではない、ってことですわね。
あと、以前別件で調べ物をしたときに、たまたま見つけた記事が今回も見つかったので紹介しておきます。こちらは@ITさんです。
http://www.atmarkit.co.jp/fjava/rensai2/webopt12/webopt12.html#ap05
こちらはサーバとブラウザのキャッシュのしくみが原因でWebサーバを1台で運用するより、複数台をロードバランサでバランシングするほうがかえってレスポンスが悪くなってしまった、という話です。
最初、「不思議なこともあるなぁ・・・」と思っていたのですが、よくよく読むと納得です。めったに更新されない画像ファイルなどを配信するシステムだと、画像ファイルはクライアント側でキャッシュされた毎回は取りに行かないのが普通です。
しかし、負荷分散対象の各サーバ毎に、HTTPレスポンスヘッダで返すETag(ファイルの識別情報のようなもの)が異なるため、クライアントがたまたま同じサーバに振り分けられたときしかキャッシュが効かず、その場合には再度画像データを要求してしまう、ということです。これだとクライアントの数が増えれば増えるほど、影響が大きくなりますね。
こちらのサイトには、Apacheの場合の対処法なども紹介されています。
Webキャッシュまわりの話もけっこう仕事で出てくるので、また何かあれば紹介します。
この記事が気に入りましたら、また、お役に立ちましたら、以下のアイコンをクリックしていただけると嬉しいです(^^)
※コメント投稿者のブログIDはブログ作成者のみに通知されます