« LANケーブル、カテゴリー5eと6のどっちにする | Main | DNSサーバ設定上級編:オリジン・キャッシュの区別とforwarder設定の使い分け »

October 28, 2004

HTTPヘッダー研究その3: キャッシュコントロール

ロゴや.cssのように滅多に更新されないデータがあったとします。サイトにアクセスする度にWEBブラウザーがこういったデータを毎回読み込むようになっているとネットワーク帯域の無駄遣いですし、レスポンスも遅くなります。そこで今回はHTTPレスポンスヘッダーを書き換えてそれらのデータをWEBブラウザーのキャッシュに残るようにする方法を記してみたいと思います。

【基礎知識編】
キャッシュコントロールを考える際、知っておくべきHTTPレスポンスヘッダーは4つ。Cache-Control、Pragma、Expires、及びETagである。細かい話しは省略するので次のサイトを見ておいてください。(ずるい?)

事例に学ぶWebシステム開発のワンポイント(12)

今回はETagは無条件削除、Cache-ControlだけコントロールするとしてPragmaとExpiresは対象外とします。


【Apacheでの設定編】
apacheの場合いろいろなやり方があるようですが、ここではmod_expiresを追加する方法をご紹介します。

まずmod_expiresを追加してコンパイルします。
./configure --enable-module=expires
make; make install

そして以下のような要領でhttpd.confを書き換えます。


<Directory />
Options None
AllowOverride None
ExpiresActive On
ExpiresByType text/html "access plus 1 hours"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType text/css "access plus 1 days"
ExpiresByType application/x-javascript "access plus 1 days"
</Directory>


【Tux Web Serverでの設定編】
①/proc/sys/net/Tux Web Server/generate_cache_controlが"1"になっていなければ"1"にします。ただしデフォルトが"1"なので特に書き換える必要はないかも。
②/etc/Tux Web Server.mime.typesを次の要領で書き換えます。


text/html html|3600 htm|3600
image/gif gif|86400
image/jpeg jpeg jpg|86400 jpe


③/etc/init.d/Tux Web Server restart


【IISでの設定編】
IISの場合は拡張子別でのHTTPヘッダーコントロールができず、フォルダ単位になります。IISの場合はGUIベースなので簡単です。
HTTP_compress_IIS.gif


【やってみた結果】
HTTPレスポンスヘッダーを見て次のようになっていたら成功です。
Date: Thu, 28 Oct 2004 09:31:06 GMT
Content-Type: text/html
Cache-Control: max-age=3600

さて効果はどうか。実際のデータを多少改変したのが以下の図です。日曜日と月曜日の間に設定変更をしましたが、リクエスト、レスポンス共激減したようですね。
cache_hit.gif

|

« LANケーブル、カテゴリー5eと6のどっちにする | Main | DNSサーバ設定上級編:オリジン・キャッシュの区別とforwarder設定の使い分け »

WEBサーバ 【人気】」カテゴリの記事

Comments

拡張子という道具を使うようおふれを出した会社さんの製品にて
拡張子別が設定できないというのも面白い話ですね...
(遅レスですみません)

Posted by: k@g | May 25, 2005 at 08:38 PM

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/32004/1796313

Listed below are links to weblogs that reference HTTPヘッダー研究その3: キャッシュコントロール:

« LANケーブル、カテゴリー5eと6のどっちにする | Main | DNSサーバ設定上級編:オリジン・キャッシュの区別とforwarder設定の使い分け »