Как долго существует кеш браузера (файлы .js) - PullRequest
4 голосов
/ 21 апреля 2011

ASP.NET 4.0

Если я обновил свой файл .js на странице, то, похоже, браузер клиента не загружает новый файл .js (из-за кеша браузера?).Какие факторы могут повлиять на сохранение старого файла .js на ПК клиента?Есть ли способ заставить клиента загрузить новый файл .js?

РЕДАКТИРОВАТЬ: У меня все еще есть другой вопрос - Как долго браузер хранит кэш .js?Управляется ли он в настройках браузера клиента?

Ответы [ 3 ]

8 голосов
/ 21 апреля 2011

хорошо, ваш рабочий файл не подходит для частой смены, попробуйте добавить версию к имени вашего файла, например jquery, новая версия генерирует файл с новым именем, например:

/myfile.1.0.0.js

для:

/myfile.1.0.1.js
7 голосов
/ 21 апреля 2011

Простой способ заставить браузер снова загрузить файл - это добавить строку запроса в URL

/myfile.js?v=1
1 голос
/ 21 июля 2012

Как правило, браузеры будут кэшировать ответ от сервера на основе точного запрошенного URL (с параметрами запроса).Когда браузер снова запрашивает точно такой же URL-адрес, будет использоваться кэшированная копия.(конечно, существуют стратегии кэширования, но давайте предположим простой сценарий)

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

Если вы разрабатываете страницу и можете ее изменить, тогда вы можете использовать автоматический способ создания ссылки на JavaScript.на странице

<script type="text/javascript" src="/myfile.js?modified=XXXXX">
</script>

Где XXXX программно установлен на отметки информации DateModified myfile.js на каждой странице рендеринга.Таким образом, всякий раз, когда эти файлы модифицируются, ссылка выходного скрипта автоматически изменяется на новое значение, и браузер вынужден загружать его снова. Например,

, если у меня есть funcs.js файл, вывод будет выглядеть как

<script type="text/javascript" src="/funcs.js?modified=43253452352342">
</script>

Позже, если файл будет изменен, рендеринг изменится на что-то вроде

<script type="text/javascript" src="/funcs.js?modified=43253456789678">
</script>

измененный измененный параметр запроса заставит браузер снова загрузить файл

...