На написание сей статьи меня подтолкнуло неведение некоторых специалистов решения проблемы кеширования статики в браузере клиента. Исходя из чего, делаю вывод, что краткое изложение проблемы не будет лишним и поможет разобраться в вопросе человеку любого уровня, в том числе и менеджерам проектов, так как на практике вижу, что проблема актуальна для всех.
На самом деле всё куда проще и что касается правильно подключенных css и js-файлов через API-битрикса, то тут всё работает с коробки, только это знают не все. Для любого подключаемого файла проблема решается добавлением аргумента
?1487583138267920:
src="/bitrix/cache/js/s1/kernel_main.js?1487583138267920" |
Наверняка, многие из вас видели его при просмотре кода страницы. В этом и есть вся фишка.
Имя файла тоже, но путь к файлу браузеры считают новым. Этот код меняется каждый раз после изменения файла и его размера, браузеры видят новый путь и загружают файл повторно.
Тот же самый финт можно выполнить и прямо в коде css файла, но делать это придётся уже вручную или если вы используете какие-нибудь препроцессоры css, то версию файла можно вынести в переменную и не лазить по коду каждый раз:
section.carousel .ctrls .owl-next {
background: url(../images/etc/sprite.png?v=1.5) no-repeat;
} |
А всё что касается публичной части сайта, то процесс легко автоматизировать с помощью утилиты, которая использует сама система, при подключении файлов:
$path = '/bitrix/templates/1c-bitrix-new/images/logo.png';
echo '<img src="'. CUtil::GetAdditionalFileURL($path) .'">'; |