これが、最新のプロジェクトで使用しているスニペットです。
コントローラから:
if ( IS_DEV ) {
$this->view->cacheBust = microtime(true);
} else {
$this->view->cacheBust = file_exists($versionFile)
// The version file exists, encode it
? urlencode( file_get_contents($versionFile) )
// Use today's year and week number to still have caching and busting
: date("YW");
}
ビューから:
<script type="text/javascript" src="/javascript/somefile.js?v=<?= $this->cacheBust; ?>"></script>
<link rel="stylesheet" type="text/css" href="/css/layout.css?v=<?= $this->cacheBust; ?>">
公開プロセスでは、現在のビルドのリビジョン番号が記載されたファイルが生成されます。これは、そのファイルをURLエンコードし、それをキャッシュ無効化として使用することで機能します。フェイルオーバーとして、そのファイルが存在しない場合、キャッシュが引き続き機能するように年と週の番号が使用され、少なくとも週に1回は更新されます。
また、これにより、開発環境でのすべてのページの読み込みに対してキャッシュの無効化が提供されるため、開発者はリソース(javascript、css、ajax呼び出しなど)のキャッシュをクリアすることを心配する必要がありません。