Файл JavaScript не обновляется независимо от того, что я делаю
У меня есть внешний файл JavaScript, и как в FireFox, так и в Chrome, будут ли очищены все данные для просмотра, он НЕ будет обновляться ни на что. Я считаю, что что-то произошло, когда я сделал резервную копию своего файла, который я просто добавил "_thedate" в конец имени. Затем сохраните как исходное имя.
Теперь я не могу избавиться от старого JS независимо от того, что, если я не изменю имя файла, которое я действительно не хочу делать, или добавьте script на страницу PHP, которая толпит его.
Кто-нибудь знает это решение?
Ответы
Ответ 1
Вы уверены, что вы связываетесь с одним и тем же файлом, а затем редактируете тот же файл?
В каком-то браузере вы можете использовать CTRL F5 для принудительного обновления.
Firebug также имеет вкладку net с "Отключить кеш браузера"
Обновление 2017:
Если вы используете отладчик Google Chrome, это то же самое, вы можете перейти в раздел "Сеть" и убедиться, что "Отключить кеш (в то время как DevTools открыт)" отмечен в настройках панели отладчика.
Кроме того, когда вы связываете файл JavaScript, используйте
<script src="my-js-file.js?v=1"></script>
или v=2
и т.д., когда вы определенно хотите обновить файл. Или вы можете перейти на консоль и сделать Date.now()
и получить временную метку, например 1491313943549
, и использовать
<script src="my-js-file.js?t=1491313943549"></script>
Некоторые инструменты построения сделают это автоматически для вас или могут быть настроены так, чтобы сделать что-то вроде:
<script src="main.742a4952.js"></script>
который, по сути, испортит кеш.
Обратите внимание, что при использовании v=2
или t=1491313943549
или main.742a4952.js
у вас также есть то преимущество, что для ваших пользователей они определенно получат и новую версию.
Ответ 2
Как добавить в тег '? 2'?
<script src="a.js?2"></script>
Сервер должен возвращать тот же файл с или без "? 2", но браузер должен видеть его как другой файл и загружать. Вы можете просто изменить эту строку запроса всякий раз, когда файл будет изменен.
адаптирован из: http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/
Ответ 3
У меня была эта проблема раньше, это очень расстраивало, но я нашел работу. Введите полный адрес js файла (т.е. Yourhost.com/javascript.js) и загрузите его. Вероятно, вы увидите загрузку старой версии. Затем нажмите f5, чтобы обновить эту страницу, и вы увидите загрузку новой версии. Теперь файл js будет обновлен в вашем кеше, и код должен работать, как вы ожидаете.
Ответ 4
Я использую это решение.
Использование firefox
1. с помощью веб-разработчика → Веб-консоль
2. Откройте файл java- script на новой вкладке.
3. Обновите новую вкладку, где вы увидите новый код.
4. Обновить исходную страницу
5. Вы должны увидеть ваши изменения.
Ответ 5
Переименуйте файл js на что-то еще временно. Это единственное, что сработало для меня.
Ответ 6
Лучший способ браузеров - добавить случайное число в путь к файлу js.
Пример в псевдокоде:
// generate a random number
int i = Random.Next();
echo "<script src='a.js?'" + i + "></script>";
Это гарантирует, что ваш браузер всегда перезагружает файл, потому что он считает его другим файлом из-за случайного числа в URL-адресе.
Сервер всегда будет возвращать файл и игнорировать то, что появляется после "?".
Ответ 7
У меня была эта проблема, и я решил ее в Chrome, просто отключив кэш: - нажмите F12; - перейти на вкладку Сеть; - Нажмите "Отключить кэш".
Ответ 8
Вы на 100% уверены, что ваш браузер даже загружает script? Перейдите на свою страницу в Firefox и используйте консоль в Firebug, чтобы проверить, загружен ли script или нет.
Ответ 9
У меня такая же проблема на некоторое время, и мне удается разобраться... И мое дело было в том, что у меня есть 2 javascript с тем же именем функции.
Ответ 10
Немного поздно для вечеринки, но если вы поместите это в свой html, он не позволит вашему веб-сайту обновлять кеш. Для загрузки сайта требуется немного больше времени, но для целей отладки мне это нравится. Из этого ответа: Как программно очистить кеш браузера?
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
Ответ 11
1. Очистить кэш браузера в инструментах разработчика браузера 2. Вкладка "Под сетью" - выбрать параметр "Отключить кэш" 3. Перезапустить браузер 4. Принудительно перезагрузить файл Js, команда + Shift + R в Mac Убедитесь, что новая война правильно развернута на стороне сервера.