Жмем Ctrl+F5 за посетителя или принудительная очистка кеша браузера

Фев 24, 2017
Жмем Ctrl+F5 за посетителя или принудительная очистка кеша браузера

Наш ведущий разработчик Денис Богданов рассказывает, как решить проблему кеширования статики в браузере клиента.

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

На самом деле всё куда проще и что касается правильно подключенных css и js-файлов через API-битрикса, то тут всё работает с коробки, только это знают не все. Для любого подключаемого файла проблема решается добавлением аргумента ?1487583138267920

src="//opt-560835.ssl.1c-bitrix-cdn.ru/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) .'">';