apacheでのキャッシュ設定についてまとめ
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">