«Моя территория мысли»

Правильное отключение кэша для статичных файлов или как учитывать ревизии таких файлов при подключении к документу

  • Разработка

  • 6 Март 2017

  • 458

  • 0

Правильное отключение кэша для статичных файлов или как учитывать ревизии таких файлов при подключении к документу

Очень важно кэшировать статичные файлы, скрипты, стили, изображения, шрифты, и подобные выше озвученным файлам, на стороне клиента, это всем известный факт. Вопрос лишь в том, как это делать правильно. Об этом и поговорим в статье...

Поиск в интернете, может дать весьма хороший совет, вести учет версии в адресе при подключении, ну допустим мы подключаем стили шаблона:
/assets/stylesheets/main.css

После этого мы вносим изменения в файл, но браузер клиенту показывает старую версию, что делать? Правильно, изменить адрес таким образом:
/assets/stylesheets/main.css?v=2

И так до бесконечности.. Знаете вроде бы и не плохо, но ведь это напрашивается на автоматизацию, тем более, когда у нас множество представлений, и где-то да можно не сменить версию. Такое случалось со многими, и эта проблема решаема.

Я написал следующую функцию:

function asset($location)
{
	if (file_exists($filename = $_SERVER['DOCUMENT_ROOT'] . $location))
	{
		return sprintf('%s?revision=%s', $location, filemtime($filename));
	}

	return $location;
}

Применять ее также просто:

echo asset('/assets/template/main.css');

На выходе мы получим что-то вроде:
/assets/template/main.css?revision=1485470816

Теперь этот процесс полностью автоматизирован, мы можем спокойно работать и забыть про ад с кэшем!

Также функцию вы можете скачать тут.

Спасибо за внимание!

Комментарии