[PHP]cssやjsがキャッシュされて更新がすぐ適用されないときの対処法

背景

WordPressも含め、サイト開発中に、CSSやJavaScriptを変更したのに、ブラウザで確認すると適用されていないことが多々ある。
あれ?書き間違えたかな?と思いながら開発者ツール(F12)で確認すると、そもそも変更点が見当たらない。

開発者だけならまだしも、利用者に更新のたびにキャッシュ削除させるわけにもいかないので、対策を打ちました。

解決策

<link rel="stylesheet" type="text/css" href="style.css?<?php echo date('YmdHis', filemtime($filepath)) ?>">

ブラウザではURLのパラメーターが変わるとキャッシュを読み込みなおしてくれるらしいので、
ファイル名の後に?<適当な文字列>を追加する。

これ自体は何の文字列でもよいが、
PHPのfiletime()を使ってキャッシュさせたくないファイルの更新日時を取得することで、
効率よくキャッシュの再読み込みができます。

ほかにもやり方はいろいろあるそうですが、これが一番楽に感じたし、できればなんでもよいや。

参考

  • https://norm-nois.com/blog/archives/3159