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





Поместите в свой код javascript такую версию, которая обновляется при внесении изменений.
<script src = "/code.js?ver=123" type = "text/javascript"></script>
Тогда они всегда будут получать новую версию.
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.
является ли javascript для svn_version = 678 кешированным, или он перезагружается каждый раз (потому что добавлен параметр get)?
Этот подход также использовался в Ruby on Rails.
Каким образом можно «вычислить это на основе отметки времени файловой системы или номера фиксации вашей подрывной деятельности»? SVN делает это при фиксации?
Это не является пуленепробиваемым, некоторые прокси-серверы включают параметры запроса как часть кеша. Лучшее решение - добавить к имени файла отметку времени или версию. На моем сайте я генерирую 7-значную контрольную сумму файла во время сборки, поэтому, если что-то изменится в файле, создается новая контрольная сумма, файл переименовывается, и, таким образом, браузер знает, что нужно загрузить обновленный файл.
Конечно, предполагается, что HTML тоже не кэшируется ...;)