Когда браузер автоматически очищает кэш внешнего файла JavaScript? - PullRequest
50 голосов
/ 16 октября 2008

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

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

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

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

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

Ответы [ 3 ]

53 голосов
/ 16 октября 2008

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

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

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

14 голосов
/ 16 октября 2008

Поместите версию в свой код JavaScript, как эта, которая обновляется, когда вы вносите изменения

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

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

13 голосов
/ 16 октября 2008

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

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

Подробнее см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...