はじめに
cssなどを更新した際にブラウザ側でファイルを読み込まずにキャッシュが読み込まれcssなどの修正が反映されない事象があったためCache Bustingというブラウザのキャッシュを制御する方法を記載
使用環境
PHP5.4.16
CakePHP2
具体例
<link rel="stylesheet" href="style.css">
上記の様に記載されている読み込み箇所のファイルの末尾にクエリパラメータとして固有の文字列を設定する
<link rel="stylesheet" href="style.css?202300914">
こうすることでブラウザが前のバージョンとは違うファイルだと認識するため、キャッシュではなくファイルの読み込みを実施するという方法です。
あとがき
CakePHP2にはあらかじめCache Bustingを行う機能が備わっているようで
core.phpファイルの
//Configure::write('Asset.timestamp', true);
この部分のコメントアウトを外してtrueをforceに変更します
Configure::write('Asset.timestamp', 'force');
上記の様に設定すれば動作するとのこと。
ただ、コメント確認したところ上記の設定はキャッシュ無効としてブラウザを開くたびにキャッシュがクリアされる仕様となっていそう。
今回はファイルを更新した際に1回だけ実施すれば良かったのでクエリパラメータを設定する方法で行っています。