Можно ли запретить браузеру кэшировать javascript код?

Когда обновляю код на сервере он не обновляется из за того что закэшировался браузером и иногда в моем браузере приходится перезагружать страницу через Ctrl + F5. Но пользователей я не смогу просить так делать постоянно, верно?
Так вот вопрос - можно ли как-то принудительно его обновить или типа того?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 2
Для того чтобы заставить браузер скачать скрипт, достаточно просто добавить в конце url какой-нибудь ключ, например:
example.com/script.js?version=0.0.1
это можно делать автоматически на стороне сервера.
Обычно в современном фронтенде такая проблема не стоит, потому что webpack генерирует уникальные имена скриптов и стилей автоматически.
Ответ написан
Kozack
@Kozack Куратор тега JavaScript
Thinking about a11y
Либо ваш сервер должен возвращать соответствующий заголовок (например Cache-Control: no-cache, no-store, must-revalidate), но это не очень хорошая практика, так как браузер будет постоянно скачивать файл, даже если тот не изменялся. Или можно использовать Cache-Control: stale-while-revalidate=<seconds>, но тут не очень хорошая поддержка браузерами.

Либо постоянно добавлять в ссылку ключ. Но этот ключ должен изменяться только при изменении скрипта, чтобы браузер мог его кэшировать. Я, на пример, в таких ситуацииях добавляю ?v=timestamp. Где timestamp — время последнего изменения файла.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Karpion
По идее - клиент (браузер) должен запрашивать сервер на тему "вот у меня есть файл, который ты мне выдал; последний раз он изменялся тогда-то; а сейчас там что?". Если на сервере файл более новый - то сервер передаёт файл; а если не так - то говорит "используй то, что в кэше".

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

Короче говоря, проверяйте настройки времени.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы