Cakephp2 Javascript読み込み文にタイムスタンプを付ける方法

投稿者: | 2022年5月28日

ControllerやViewを更新するのと違い、Javascript(CSSもそうだが)はブラウザにキャッシュされている可能性があるので、更新が即時反映されない場合がある。

Javascript更新時にブラウザでキャッシュを削除していたが、Javascript読み込み文にタイムスタンプを付けていれば、更新時にブラウザのキャッシュを気にしなくてよくなるようなので、これを実現してみる。

やり方

Javascript読み込み文 に付加するタイムスタンプはJSファイルのタイムスタンプをとってくる。

タイムスタンプはファイル読み込み時のheader情報から取得できるとのこと。

$headers = get_headers(JSファイルのフルパス, 1 );
$scripttimestamp = date("YmdHis",strtotime($headers['Last-Modified']));

JSファイルを読み込むときに、この「 $scripttimestamp 」を付加する。

echo $this->Html->script(JSファイルのパス .'?v='.$scripttimestamp,array('inline'=>false));

これで、JSファイル更新時にキャッシュクリアをしなくても更新が反映されるようになった。

どうでもいいけど

この手法でCSSかJSか何のファイルか忘れたが、timestampを取得しようとしてできなかったことがあった。

どんなケースだったか忘れたけど、もしまた同じ状況になったときに、その問題もこの記事に書くようにしよう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)