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">