Когда браузер автоматически очищает кеш внешнего файла JavaScript?

У меня есть ресурс JavaScript, который можно редактировать в любое время. После того, как он отредактирован, я хотел бы, чтобы он был распространен в браузере пользователя относительно быстро (например, примерно через 15 минут), однако частота редактирования этого ресурса невелика (возможно, 2 раза в месяц).

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

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

Я предполагаю, что это будет независимо для каждого браузера, но я не уверен.

Я пытался погуглить, но большинство обращений, которые я нашел, касались очистки кеша браузера ... это не то, что я ищу.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
50
0
44 339
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Поместите в свой код javascript такую ​​версию, которая обновляется при внесении изменений.

<script src = "/code.js?ver=123" type = "text/javascript"></script>

Тогда они всегда будут получать новую версию.

Конечно, предполагается, что HTML тоже не кэшируется ...;)

RodeoClown 16.10.2008 03:16

HTTP предоставляет несколько элементов управления для кэширования, которые браузеры по-разному игнорируют. Если вы установите разумную дату истечения срока действия, большинство браузеров будут проверять, установлена ​​ли у них текущая версия с подходящей периодичностью.

Поисковый запрос, который вы хотите включить сюда (чтобы избежать инструкций пользователя в браузере), - это HTTP.

Для получения дополнительной информации см .:

Ответ принят как подходящий

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

Если вы не хотите назначать строку версии каждый раз, когда редактируете источник, вы можете вычислить ее на основе отметки времени файловой системы или номера фиксации подрывной операции:

<script src = "/script.js?time_stamp=1224147832156" type = "text/javascript"></script>
<script src = "/script.js?svn_version=678" type = "text/javascript"></script>

Ага, это именно то, что мы делаем. То же самое и для внешних файлов CSS.

dmercer 22.01.2009 20:14

является ли javascript для svn_version = 678 кешированным, или он перезагружается каждый раз (потому что добавлен параметр get)?

Beerweasle 16.11.2009 15:18

Этот подход также использовался в Ruby on Rails.

alessioalex 06.10.2011 16:45

Каким образом можно «вычислить это на основе отметки времени файловой системы или номера фиксации вашей подрывной деятельности»? SVN делает это при фиксации?

Phill Pafford 02.02.2012 00:15

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

Dominic 02.11.2012 10:46

Другие вопросы по теме