CakePHP2のcore.phpでAsset.timestampの設定を変更するとブラウザキャッシュを無効化することができる

こんにちは。オガリア開発チームの粂です。

CakePHPのバージョン:2.4

CakePHPのcore.phpで設定できるAsset.timestampが便利です。
デフォルトはこの設定項目はコメントアウトされているのですが、

Configure::write('Asset.timestamp', true);

あるいは

Configure::write('Asset.timestamp', 'force');

と設定すると有効になります。

trueの場合はdebugレベルが0より大きい場合(つまりDevelopment Modeの場合)のみ有効になるのですが、forceを設定すると常に有効になります。

<script type="text/javascript" src="hoge.js?2013112501"></script>

というようにクエリパラメータとして日付文字列やバージョン文字列などを渡すことでブラウザキャッシュを無効化したりすると思うのですが、Asset.timestampを設定すると、この処理をCakePHPが吸収してくれるようになります。

その際、core.phpの「Apply timestamps with the last modified time to static assets (js, css, images).」というコメントにあるようにクエリパラメータとしてファイルの最終更新日時のタイムスタンプを適用してくれるので、ファイルが更新された場合のみ適用される文字列が変化することになります。

便利な機能ですね。

最後までお読みいただきありがとうございました!

Pocket