$yuzu->log();

技術ネタなど。

Apacheのmod_expiresというキャッシュモジュールを使ってWEBサイトを高速化しよう

Apacheにはmod_expiresというキャッシュモジュールがあります。 クライアント側で画像やCSSなどファイルをキャッシュさせるモジュールです。 これを利用し、転送量を減少させてWEBサイトの負荷対策します。 キャッシュを利用すると負荷対策ばかりか、表示速度も向上します。

mod_expiresが組み込まれているか確認

通常の方法でApacheをインストールしていた場合、mod_expiresはデフォルトで組み込まれています。 CentOSの場合/etc/httpd/conf/httpd.confに以下の行があることを確認してください。

LoadModule expires_module modules/mod_expires.so

mod_expiresの設定方法

httpd.confの377行目付近に以下を追加してください。

<IfModule mod_expires.c>
ExpiresActive on
ExpiresByType image/png "access plus 12 hours"
ExpiresByType image/jpeg "access plus 12 hours"
ExpiresByType image/gif "access plus 12 hours"
ExpiresByType text/css "access plus 12 hours"
ExpiresByType text/javascript "access plus 12 hours"
</IfModule>

これはpng,jpg,gif,css,javascriptを12時間という期限でキャッシュさせるという宣言です。 Apacheを再起動されば反映されます。

mod_expiresの設定が反映されているか確認

Chromeのdev toolで画像のレスポンスヘッダを確認してみましょう。

f:id:yuzurus:20150208015804p:plain

max-age=43200なので43200秒、つまり12時間にちゃんと設定されていることが確認できました。

mod_expiresの設定するにあたっての注意

もしjavascriptなどに変更があり、更新した場合、クライアント側にキャッシュが残っており表示が意図しなくなる場合があります。
その場合はhoge-v1.jsなどファイル名でバージョン管理するか、hoge.js?123456などパラメータにタイムスタンプなどを付与すれば解決します。(モダンなWEBアプリケーションフレームワークにはこのような機能が含まれていると思います。)

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール

ハイパフォーマンスWebサイト ―高速サイトを実現する14のルール