« ホスト級UNIXマシンにLinuxを入れよう | Main | HTTPヘッダー研究その4: IISのHTTPヘッダーを書き換えよう »

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

|

« ホスト級UNIXマシンにLinuxを入れよう | Main | HTTPヘッダー研究その4: IISのHTTPヘッダーを書き換えよう »

Comments

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

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

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


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

« ホスト級UNIXマシンにLinuxを入れよう | Main | HTTPヘッダー研究その4: IISのHTTPヘッダーを書き換えよう »