apache で キャッシュ を有効にさせる

環境

サーバー apache Version 2.4
OS centos7

必要なモジュールが入っている確認

httpd -M で以下のモジュールがある確認

mod_cache.c (もしくは cache_module)
--主にキャッシュをどう扱うかに設定するモジュール

mod_cache_disk.c (もしくは cache_disk_module)
--主にどういうキャッシュを扱ってどこに保存するかを設定するモジュール

mod_expires.c (もしくは expires_module)
--キャッシュの期限に関する事を設定するモジュール

次ににモジュールを設定する
(設定を書くファイルは .htaccess httpd.conf もしくは Centos7.0 以上からはモジュールはデフォルトで別のディレクトリ(conf.modules.d/00-base.conf)から読み込んでるのでそこに書いてもいいかと思われます)

mod_cache.c と mod_cache_disk.c の設定(セットで設定する)

vim mod_cache_config.conf

<IfModule mod_cache.c>
  <IfModule mod_cache_disk.c>
    CacheRoot /var/tmp/cache (キャッシュをどこに保存するか)
    CacheEnable disk /  (どういうタイプで保存するか disk だとディスク上に mem だとメモリ上に fd はよくわからない)
  </IfModule>
  CacheIgnoreCacheControl On 
  CacheIgnoreNoLastMod On
  CacheDefaultExpire 100000 (キャッシュの期限)
  CacheMaxExpire 1728000000 (同じくキャッシュの期限)
</IfModule>

apache がキャッシュファイルを上記に指定したディレクトリに保存するので指定したディレクトリの所有権やら権利関係は設定しておくと良いかもしれないです。

mod_expires.c の設定
vim httpd.conf (httpd.conf の末尾に)

<ifModule mod_expires.c>
  ExpiresActive On (mod を有効化する設定)
  ExpiresByType text/html "access plus 30 years" (期限を html形式のファイルにアクセスされてから 30年後 とする)
</ifModule>

ここの設定をしないと Expire のヘッダーの期限が切れてます とのエラーが出てキャッシュが出ない
これで大丈夫だと思われます。


参考文献

http://httpd.apache.org/docs/current/mod/mod_cache.html