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

Сохраняются ли файлы .js?

Недавно я сделал сайт, и я внес изменения в файл .js, но когда я удаляю файл .js с FTP-сервера и загружаю новый, новый файл не отображается на веб-сайте. Я проверил исходный код за файлом .js на веб-сайте, и он не прав, он показывает источник для старого файла, а не новый, даже если старый отсутствует. Это потому, что мой браузер кэшировал файл .js?

Примечание. У меня есть этот источник

<meta http-equiv="cache-control" content="no-cache" />

на моей странице, чтобы остановить браузер от кеширования моей страницы, и я знаю, что это работает в HTML, но с этим источником там файлы ресурсов все равно будут кэшироваться?

У меня нет этой строки кода на других моих страницах, только на моей домашней странице, но файл .js по-прежнему ссылается на другие страницы, так что, возможно, это то, как он кэшируется?

Кроме того, есть ли способ проверить кеш браузера? Я использую хром.

Изменить: я только что очистил кеш браузеров и перезагрузил веб-сайт, и файл работал так, как сейчас, поэтому это означает, что файл получил кеширование. Итак, теперь мой вопрос заключается в том, как предотвратить кэширование файла ресурса?

4b9b3361

Ответ 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.