Evgenii Legotckoi
12 апреля 2017 г. 10:03

Принудительное обновление JavaScript и CSS у пользователя

CSS, JavaScript, Nginx

Всем привет!!
Разираюсь с nginx и включил кеширование статичных файлов, ну там скриптов, CSS, картинок и т.д на стороне пользовательского браузера. Так вот, когда я меняю что-то в CSS или javascript, то изменения не применяются пока не нажать последовательно CTRL+R CTRL+F5. Только тогда браузер скачивает новые скрипты и стили. Ладно я могу так сделать пока тестирую и разрабатываю сайт, но пользователь же так не будет делать, да и возможно не знает о таком. Как можно заставить пользовательский браузер обновить эти файлы, когда включено кеширование?

2

Вам это нравится? Поделитесь в социальных сетях!

1
Evgenii Legotckoi
  • 12 апреля 2017 г. 12:54
  • Ответ был помечен как решение.

Чтобы обновить javascript или CSS файлы, необходимо, чтобы url этих файлов немного отличался. Но для этого вовсе не обязательно менять имя самого файла. Можно просто добавлять в url знак вопроса и число. Тогда браузер при скачивании страницы обнаружит, отличающийся url и загрузит обновлённый скрипт заново. В HTML коде это будет выглядеть так:

<script type="text/javascript" src="/url/to/myscript.js?6"></script>

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

Было:

<script type="text/javascript" src="/url/to/myscript.js?6"></script>

Стало:

<script type="text/javascript" src="/url/to/myscript.js?7"></script>

Кто-то ещё делает автоматический расчёт контрольной суммы и добавляет её вместо вручную введённой цифры. Расчёт делается сервером, но это только добавит нагрузку на мой взгляд, которая не имеет смысла. Скриптов всё равно может быть не так уж и много, что можно вручную поменять пару циферок. Во всяком случае на небольшом ресурсе это можно сделать и вручную, а на крупном проекте новые обновления не так часто выкатываются, что можно также поменять пару циферок.

К слову говоря, например, ВКонтакте по всей видимости так и делают, если взглянуть на url их скрипта openapi.js, который служит для добавления всяких виджетов на сайты.

<script type="text/javascript" src="//vk.com/js/api/openapi.js?144"></script>

    Комментарии

    Только авторизованные пользователи могут публиковать комментарии.
    Пожалуйста, авторизуйтесь или зарегистрируйтесь