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 が動作しています

スポンサーリンク

0
0