Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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