サイトアイコン ex1-lab

Apacheに「mod_expires」を導入する

apache_logo

apache_logo

「mod_expires」について

mod_expires は、Apache HTTP サーバーのモジュールで、ウェブブラウザやプロキシサーバーに対して、どのくらいの期間キャッシュを保持するべきかを指定するためのヘッダ(Expires ヘッダや Cache-Control ヘッダ)を自動的に生成します。
この機能により、転送量を減少されサイトのパフォーマンスを向上させ、サーバーの負荷を軽減できます。

主な機能

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

キャッシュする期間は以下のように設定できます

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

モバイルバージョンを終了