- 投稿日2009-10-06 (火)
- 更新日2009-12-09 (水) 20:30
- Apache
Apacheのモジュール、mod_expiresを利用してキャッシュを利用し、転送量を軽減させて負荷対策します。
キャッシュを利用すると負荷対策ばかりか、体感速度も向上します。
キャッシュして欲しくないファイルまでキャッシュされては困ります…が、
mod_expiresは指定したファイルタイプのみキャッシュさせる事ができます。
mod_expiresの組み込みを確認
このサイトのApacheのインストール方法でApacheのインストールを進めていただけたならすでにApacheのモジュールとして組み込まれています。
/usr/local/apache2/conf/httpd.conf
にて以下の行がある事を確認してくださいLoadModule expires_module modules/mod_expires.so
まだモジュールのインストールがされていない場合は場合によってはApacheの再コンパイルが必要かもしれません。
また、動作実験はApache2.2.13にておこなってみました。
.htaccessにて設定をする
.htaccessにて設定をするとapacheを再起動する事なく設定を反映させる事ができます。.htaccessへ以下のように記述してみました
ExpiresActive On
ExpiresByType image/gif "access plus 1 days"
ExpiresByType image/jpeg "access plus 1 days"
ExpiresByType image/png "access plus 30 days"
ExpiresByType application/x-shockwave-flash "access plus 1 years"
ExpiresByType application/rss+xml "access plus 30 minutes"
ExpiresByType application/x-javascript "access plus 20 days"
ExpiresByType text/html "modification plus 15 minutes"
ExpiresByType text/css "access plus 20 days"
はじめの行はmod_expiresを使用するという宣言になります。
ExpiresActive On
使用の宣言に続き、以下のような感じに設定をしていきますExpiresByType ファイルタイプ "(access|modification) plus N (minutes|days|weeks|months|years|)"
ExpiresByType image/png “access plus 30 days”
であれば、pngファイルにアクセスされてから30日間、キャッシュを保存させるヘッダを出力させます。
初めは短い時間でキャッシュを取得させて、じょじょにキャッシュ保持させる日時を伸ばしていくのがいいと思います。
ExpiresByType text/html “modification plus 15 minutes”
modificationと指定すると修正時刻に基づいてキャッシュを生成するようです。
修正された時間から15分間キャッシュを保持する、という事になるようですが…
実はこの検証はうまくいっていないので、ツッコミがあれば宜しくお願いします。
ExpiresDefault “access plus 1 days”
ここでは触れていませんが、このようにExpiresDefaultと指定すると、
全てのファイルに対してキャッシュを設定します。(ここでは1日保持する設定ですね)
動的なサイトを使用している場合等、キャッシュを取得されては困る項目について
この設定がされるとよろしくないので、通常は指定しないのがいいと思います。
.htaccessは、置いたフォルダ以下全体に影響を与えます。
僕の場合はトップディレクトリへ設置してみました。
即座に反映されるので、FireBug等のツールで、レスポンスヘッダのCache-ControlのMax-ageが
指定した時間に設定されているかを確認してみてください。
ちなみに上記の設定でpngファイルを読み込んだ場合のレスポンスヘッダは以下になりました。
Date Tue, 06 Oct 2009 10:32:58 GMT
Server Apache/2.2.13 (Unix)
Connection Keep-Alive
Keep-Alive timeout=5, max=99
Expires Thu, 05 Nov 2009 10:32:58 GMT
Cache-Control max-age=2592000
Vary Accept-Encoding,User-Agent
30 daysで設定したので2592000(秒)としてmax-ageが設定されています。成功です。
- 次の記事→ 【帯域対策】Apacheのモジュールmod_deflateで転送量を大幅削減!
- 前の記事→ /dev/nullの再作成
コメント:0
トラックバック:1
- この記事のトラックバックURL
- http://www.ahref.org/tech/server/apacche/389.html/trackback
- この記事へのリンク
- エーエイチレフ linuxサーバー技術情報 からの記事 【負荷対策】Apacheのモジュールmod_expiresでキャッシュを利用する
- pingback from [Webサイト高速化]パフォーマンス | 大池IT製作所 10-01-24 (日) 11:42
-
[...] 元ネタ:http://www.ahref.org/tech/server/apacche/389.html [...]















関連記事