Вот фрагмент того, что я использую для моего последнего проекта.
с контроллера:
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, кодирующего этот файл и использующего его в качестве кеша. В случае отработки отказа, если этот файл не существует, используются год и номер недели, чтобы кэширование продолжало работать, и оно будет обновляться не реже одного раза в неделю.
Кроме того, это обеспечивает очистку кэша при каждой загрузке страницы в среде разработки, поэтому разработчикам не нужно беспокоиться об очистке кэша для любых ресурсов (вызовов javascript, css, ajax и т. Д.).