apacheでのキャッシュ設定についてまとめ

2018.5.24

apacheでキャッシュさせない

apache側でキャッシュさせない設定を行うためには、headersモジュールを有効にしておく必要があります。

/etc/apache2/mods-enabled下にheaders.loadのシンボリックリンクが存在するか確認します。

ls /etc/apache2/mods-enabled

存在しない場合は、下記のコマンドで有効にします。

sudo a2enmod headers

あとで無効にしたい場合は下記のコマンドを実行するとシンボリックリンクを削除してくれます。

sudo a2dismod headers

モジュールの有効無効を切り替えた後はapacheの再起動が必要です。

sudo systemctl restart apache2

htaccessでキャッシュさせないようにするには下記のコードを書きます。

confに書くことでも同じことができます。

FileEtag None
RequestHeader unset If-Modified-Since
Header set Cache-Control no-store

特定のファイルだけキャッシュしたくない場合は下記のように書きます。

<filesMatch "\.(css|js|php)$">
    FileETag None
    Header unset ETag
    Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
    Header set Pragma "no-cache"
    Header set Expires "Thu, 01 Dec 1994 16:00:00 GMT"
</filesMatch>

この例では、css、js、phpのファイルをキャッシュ対象から除外しています。

PHPでキャッシュさせない

phpでキャッシュさせない方法。

header("Expires: Wed, 10 Jan 1990 01:01:01 GMT");
header("Last-Modified: ". gmdate("D, d M Y H:i:s"). " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");

htmlでキャッシュさせない

htmlでキャッシュさせない方法。

headタグの中に書いてください。

<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Expires" content="0">