Сохраняются ли файлы .js?
Недавно я сделал сайт, и я внес изменения в файл .js, но когда я удаляю файл .js с FTP-сервера и загружаю новый, новый файл не отображается на веб-сайте. Я проверил исходный код за файлом .js на веб-сайте, и он не прав, он показывает источник для старого файла, а не новый, даже если старый отсутствует. Это потому, что мой браузер кэшировал файл .js?
Примечание. У меня есть этот источник
<meta http-equiv="cache-control" content="no-cache" />
на моей странице, чтобы остановить браузер от кеширования моей страницы, и я знаю, что это работает в HTML, но с этим источником там файлы ресурсов все равно будут кэшироваться?
У меня нет этой строки кода на других моих страницах, только на моей домашней странице, но файл .js по-прежнему ссылается на другие страницы, так что, возможно, это то, как он кэшируется?
Кроме того, есть ли способ проверить кеш браузера? Я использую хром.
Изменить: я только что очистил кеш браузеров и перезагрузил веб-сайт, и файл работал так, как сейчас, поэтому это означает, что файл получил кеширование. Итак, теперь мой вопрос заключается в том, как предотвратить кэширование файла ресурса?
Ответы
Ответ 1
Я не уверен, что тег no-cache meta
- это путь. Это отрицает кеширование all и доброе поражение цели быстродоступных страниц.
Кроме того, тег AFAIK, meta
работает на странице, поэтому, если у вас есть страница без нее, которая ссылается на ваш JS - он будет кэшироваться.
Широко допустимый способ предотвращения кэширования JS файлов (и, опять же, CSS) заключается в том, чтобы различать запросы для них:
Скажем, у вас есть:
<script type="text/JavaScript" src="somescript.js″></script>
он будет кэшировать его (если не указан вышеуказанный метатег.
Что вы хотите, так это то, что на каждой загрузке страницы указанная выше строка выглядит по-разному (по URL-адресу):
<script type="text/JavaScript" src="somescript.js?some-randomly-generated-string″></script>
То же самое касается CSS.
Если вы использовали какую-то сеть JS - это позаботится об этом, если бы вы предоставили ей какой-то вариант конфигурации "без кеша".
Вы, конечно, можете сделать это и в чистом JS. Некоторая строка, связанная с Date
, является опцией.
Теперь, как правило, вы не хотите отрицать все кеширование, поэтому способ сделать это - добавить параметр версии к вашему URL-адресу:
<script type="text/JavaScript" src="somescript.js?version=1.0.0″></script>
и оттуда управляйте своими скриптами.
ИЗМЕНИТЬ
Нет необходимости в дополнительном расширении. Если я не ошибаюсь, "Chrome Developer Tools" встроен во все версии Chrome (точно в бета-версии и dev) и доступен, нажав Ctrl-Shift-I. Там, на вкладке "Сеть", вы можете видеть все ваши запросы, содержимое и заголовки.
Ответ 2
Да. Ресурсы по-прежнему кэшируются. На мой взгляд, хорошей практикой, чтобы избежать этого, является версия ваших файлов ресурсов в параметре url = value.
Например, вы должны установить ulr в файл js или css следующим образом:
<... src= "script.js? v = 1"... / " > <... href=" style.css? v = 1../" > и когда произошли какие-либо изменения, просто измените v = 1 на v = 2...
который не повлияет на ваш код, но заставит ваш браузер/прокси и т.д. повторно загрузить ресурс
Ответ 3
Используйте экземпляр incognito chrome (ctrl + shift + n), чтобы проверить источник, этот режим не будет использовать кешированные файлы. С этим вы можете проверить, кэшируется ли ваш файл на стороне клиента.
Если на стороне клиента убедитесь, что ваш сервер не отправляет заголовки управления кешем вместе с файлом JS.
Если на сервере есть масса возможностей, возможно, у вас есть обратный прокси-сервер, физический балансировщик нагрузки или какой-либо другой механизм кэширования.
Изменить (вопрос изменен):
Используйте это расширение chrome, чтобы проверить отправленные заголовки вместе с вашими .js файлами. Вероятно, установлен заголовок управления кешем, который инструктирует хром кэшировать ресурс.
Если вы используете apache, вы можете переопределить это поведение, используя файл .htaccess.