Webサイトで、画像や Javascript、CSS といった静的ファイルを更新したときに、
エンドユーザ側では、Webブラウザにキャッシュされているため
タイムリーに更新が反映されない場合がある。
Webブラウザでリロードすれば更新されるのだが、
エンドユーザは、サイト側で更新されたかどうかなんて知ったこっちゃないし、
いちいちリロードしてくれることを期待するのは、現実的ではない。
1つの対策としては、hoge.css?ver=2.1.3 のようにクエリストリングで付加しているバージョンno をカウントアップさせて、ブラウザキャッシュを読み込まないようにして更新されるようにするという方法がある。
ただ、手動で管理するのは面倒であるし、付け忘れたりなどする。
cakephp では、以下の2点を行うと、自動でファイルの最終更新時刻のタイムスタンプをクエリストリングとして付加してくれる。
- config/core.php に Configure::write('Asset.timestamp', 'force'); を設定
- タイムスタンプを付加したいファイルを正規のヘルパーで出力
CSS / Javascript / 画像 については、HTML ヘルパーの各メソッドで出力すれば、
hoge.css?1320981206
のようにタイムスタンプが付加される。
参考: cakephp 公式ドキュメント