@sashakirichenko

Глюки на сайте после программных изменений, пока не очистить кэш. Как от этого избавится?

Очень часто программисты закидают на сайт поправки, доробки и у людей, в которых закэшировалась предыдущая версия сайта может много пунктов не работать, пока они не очистят кэш. Что делать, можно как-нибудь заставлять браузеры очищать кэш, чтобы у посетителей при заходе все работало исправно?
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro
frontend developer
Браузер кэширует ресурсы по полному УРЛ, включая параметры запроса.
Поэтому выход очень простой, и он повсеместно используется.
Нужно дописать в queryString любой уникальный параметр.
В лоб можно писать метку времени

<script src="my_script.js?<?= time() ?>">

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

Лучше ввести версионирование. Простейший вариант – вручную обновлять версию при изменении

<script src="my_script.js?v=1">
<script src="my_script.js?v=2">


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

<script src="my_script.ab21df.js">

Такой вариант хорошо подходит для SPA, так как сборщик тогда обычно генерит и индексный файл и может в нем автоматически подключать актуальные имена файлов.

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

<script src="my_script.js?v=<?= filemtime('/path/to/my_script.php') ?>">
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Отсылать со всеми HTTP-ответами на запросы строку "Cache-control: max-age=1, no-cache" в заголовке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы