Apacheに「mod_expires」を導入する
「mod_expires」について
mod_expires は、Apache HTTP サーバーのモジュールで、ウェブブラウザやプロキシサーバーに対して、どのくらいの期間キャッシュを保持するべきかを指定するためのヘッダ(Expires ヘッダや Cache-Control ヘッダ)を自動的に生成します。
この機能により、転送量を減少されサイトのパフォーマンスを向上させ、サーバーの負荷を軽減できます。
主な機能
- キャッシュ期間の指定:
mod_expires は、特定のファイルタイプに対して、キャッシュの有効期限を指定することができます。これにより、クライアントが一度取得したリソースを、指定された期間再取得しないように制御できます。 - ヘッダの自動生成:
mod_expires は、HTTP レスポンスに Expires ヘッダと Cache-Control ヘッダを自動的に追加します。これにより、リソースがブラウザやキャッシュサーバーでどの程度キャッシュされるべきかを制御できます。 - 柔軟な設定:
mod_expires の設定は、ファイルタイプ(例:image/jpeg, text/css)や、アクセス日 (access) と変更日 (modification) に基づいてキャッシュ期間を設定することが可能です。これにより、異なる種類のリソースに対して異なるキャッシュポリシーを適用できます。
Apacheで「mod_expires」が有効になっているか確認する
Apacheで「mod_expires」がロードする設定になっているか確認します。
dnfやyumでインストールすれば「/etc/httpd/conf/httpd.conf 」が設定ファイルとなっているはずですので、LoadModule の箇所で「mod_expires.so」のロードする設定になっているか確認します
$ grep mod_expires /etc/httpd/conf/httpd.conf LoadModule expires_module modules/mod_expires.so
Apacheに「mod_expires」を設定する
「httpd.conf」等の設定ファイルに以下のような設定を追加します。下記では「VirtualHost」を設定している設定ファイルの<Directory ~~> のディレクティブ手前くらいに追記しています
$ sudo vim /etc/httpd/conf.d/example.com.conf <IfModule mod_expires.c> ExpiresActive on ExpiresByType image/gif "access plus 1 weeks" ExpiresByType image/jpeg "access plus 1 weeks" ExpiresByType image/png "access plus 1 weeks" ExpiresByType text/css "access plus 1 weeks" ExpiresByType text/javascript "access plus 1 weeks" </IfModule> # 設定後はApacheの再起動を実施します $ sudo systemctl httpd restart
キャッシュする期間は以下のように設定できます
- years
- months
- weeks
- days
- hours
- minutes
- seconds
mod_expiresでキャッシュが有効になっているか確認する
mod_expiresが有効になっているか確認します。Chromeのデベロッパーツールでヘッダー情報を確認する方法でもできますが、Curlコマンドの方が簡単ですので以下の方法で確認します
$ curl -I https://example.com/img/sample01.jpg HTTP/1.1 200 OK Date: Mon, 19 Aug 2024 04:34:54 GMT Server: Apache Last-Modified: Thu, 27 Jun 2024 01:58:07 GMT ETag: "460091-4618f-61bd5765a452a" Accept-Ranges: bytes Content-Length: 287119 Cache-Control: max-age=604800 Expires: Mon, 26 Aug 2024 04:34:54 GMT Connection: close Content-Type: image/jpeg
「curl -I <ファイル等のURL>」コマンドで、HTTPリクエストを送信してレスポンスヘッダが取得できます。
上記では、Expires ヘッダが含まれており、「Cache-Control: max-age=604800」 の設定も確認できるので、mod_expires が動作しています
ディスカッション
コメント一覧
まだ、コメントがありません