ブラウザがキャッシュしたJavaScritpやCSSや画像などを確実に更新したい場合、ファイルの後ろにタイムスタンプ(更新日時)をつける。
CakePHP3,CakePHP4ともに以下の方法をとる。
ヘルパーを使って静的ファイルを配置する。
ヘルパーを使わないと、面倒見てくれないので、ヘルパーを使って配置する。
$this->Html->script('app');
$this->Html->css('style');
$this->Html->image('cake_logo.png')
config/app.phpのAsset timestapをtrueかforceにする。
trueはデバックモード時に、forceは常にタイムスタンプをつけるようになる。
'Asset' => [
'timestamp' => true,
],
結果
<link rel="stylesheet" href="/css/style.css?1478939889"/> <script src="/js/app.js?1479019884"></script>
ちなみに、UrlHelperの中のassetTimestampメソッド中を見ると、タイムスタンプはファイルのfilemtimeの値を使用している。
https://github.com/cakephp/cakephp/blob/master/src/View/Helper/UrlHelper.php