ハウテレビジョンブログ

『外資就活ドットコム』『Liiga』『Mond』を開発している株式会社ハウテレビジョンのブログです。

cakephp でキャッシュを無視して静的ファイルが更新されるようにする

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 公式ドキュメント

Configuration — Cookbook v2.x documentation