Почитать другие заметки или статьи

Предположим, вы разработчик и внесли определенные изменения в файлы стилей сайта (css), а также в файлы, где хранится код написанный на языке javascript. Что произойдет, если на сайт зайдёт посетитель, который ранее уже посещал странички вашего бесподобного ресурса?

Он увидит старый дизайн. А его браузер запустит «старый» код javascript, что вероятно приведет к ошибке в работе сайта.

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

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

А вот, со стилями и javascript мы вынуждены что-то предпринять, каким то образом заставить браузер посетителя сайта загрузить обновленные версии файлов.

Как в HTML документе подключается CSS и JavaScript?

Напомню, что в HTML документе внешний файл CSS подключается с помощью тега LINK:

<link href="/каталог где находится ваш css файл/file.css" rel="stylesheet">

Внешний файл с Javascript кодом подключается с помощью тега SCRIPT:

<script src="/каталог где находится ваш javascript файл/file.js" ></script>

Как сообщить браузеру посетителя о том, что версия файла обновилась?

На самом деле, сделать это очень просто.

Достаточно в имени файла, после его расширения, добавить что то вроде:

?version=1

В итоге подключение наших файлов будет выглядеть так:

<link href="/каталог где находится ваш css файл/file.css?version=1" rel="stylesheet">

И, соответственно, для подключения JavaScript:

<script src="/каталог где находится ваш javascript файл/file.js?version=1" ></script>

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

Как автоматизировать процесс добавления версии к файлам CSS и JS?

Если над действующим сайтом в процессе его существования происходит регулярная работа по изменению файлов стилей и javascript кода, у разработчика рано или поздно появляется желание автоматизировать процесс добавления новой версии файла.

Сделать это таким образом, чтобы в будущем не задумываться о том, а поменял ли он номер версии в коде и не получит ли посетитель ошибку, поскольку его браузер открыл старую версию файлов?

Здесь нам на помощь приходит PHP.

А именно: встроенная функция filemtime, которая возвращает время последнего изменения файла.

Так как время возвращается в формате временной метки Unix, нам достаточно вставить полученный результат в наш HTML код подключения файлов.

В итоге мы получим что то вроде:

<?php $filemtime = filemtime('абсолютный путь к файлу на сервере/file.css') ?>

<link href="/относительный путь к файлу/file.css?v=<?php echo $filemtime ?>" rel="stylesheet">

Аналогичным образом мы можем подключить и JavaScript файлы.

И навсегда забыть о том, что после изменения файлов стилей или JS кода, необходимо обновить версию файла.

Заключение

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

https://vk.com/sitogon

С уважением, Владимир Егоров