Js файл не обновляется
У меня есть внешний файл JavaScript, и независимо от того, очищены ли все данные просмотра в FireFox или Chrome, он НЕ будет обновляться, несмотря ни на что. я верю что-то произошло, когда я сделал резервную копию своего файла, к которому я просто добавил «_thedate» в конце имени. Затем Сохранить как обратно к исходному имени.
Теперь я не могу избавиться от старого JS, несмотря ни на что, если я не изменю имя файла, чего я действительно не хочу делать, или не добавлю скрипт на страницу PHP, что переполняет его.
Кто-нибудь знает решение этого?
Попробуйте использовать Fiddler, чтобы проверить, загружаете ли вы файл вообще и правильно ли его содержимое. Вы можете получить 304 или 401 обратно. - Jakub Konecki
+1 за хороший вопрос - Kishan
В Сафари (Сьерра), Disable cache сделал трюк для меня, в то время как empty cache не. - Hammad Khan
Обновление 2017:
Если вы используете отладчик Google Chrome, это то же самое, вы можете перейти в раздел «Сеть» и убедиться, что в настройках панели отладчика установлен флажок «Отключить кеш (пока открыт DevTools)».
Кроме того, когда вы связываете файл JavaScript, используйте
or v=2 и т. д., если вы определенно хотите обновить файл. Или вы можете перейти к консоли и сделать Date.now() и получить метку времени, например 1491313943549 и использовать
Некоторые строительные инструменты сделают это автоматически или могут быть настроены для этого, например:
что по существу разорвет кеш.
Внимание что когда вы используете v=2 or t=1491313943549 или main.742a4952.js , у вас также есть то преимущество, что ваши пользователи обязательно получат более новую версию.
I have an external JavaScript file and whether in FireFox or Chrome, whether all browsing data is cleared, it will NOT update no matter what. I believe something happened when I made a backup of my file, which I simply added "_thedate" to the end of the name. Then Save As back to the original name.
Now I cannot seem to get rid of the old JS no matter what unless I change the name of the file, which I really don't want to do, or add the script to the PHP page, which crowds it.
Anyone know the solution to this?
Try using Fiddler to see if you are downloading the file at all and if the content is correct. You might be getting 304 or 401 back.
If you rename a file by changing just uppercase to lowercase or the reverse, and your file was already present on the server, the old file will always be reloaded, even by doing CTR-F5
2 ответа
У меня такая же проблема с моими активами (css, js, изображениями и т. Д.). Единственное, что работает (насколько мне известно), это добавление случайного числа рядом с URL-адресом, например: /main.js?someRandomNumber .
Это заставляет браузер перезагружать файл и загружать новый код.
Для этого используйте php следующим образом:
Если вы найдете лучший способ сделать это, дайте мне знать .
Это не моя проблема. Я попытался перезагрузить файл напрямую и добавить ?randomwhatever в конец URL-адреса. Я все еще получаю файл с теми же ошибками.
Затем попробуйте сделать резервную копию своего веб-сайта, а затем удалите исходный веб-сайт. После удаления перезапустите серверную службу и снова загрузите сайт.
Если я перезапускаю серверную ОС, она загружает новую версию, но при повторном редактировании файлов возникает та же проблема.
Я не администратор сервера, поэтому не знаю, что происходит с вашим сервером. Вы пробовали переустановить весь сервер? Это могло помочь.
Для меня это звучит как проблема с настройкой vbox. Обычно, если вы нажмете ctrl + f5, ваш браузер перезагрузит все скрипты.
Следующий пример работает, если вы не загружаете скрипт каждый раз при развертывании проекта.
Таким образом ваш браузер должен идентифицировать его как новый ресурс при изменении значения v.
Я думаю, вам нужно установить гостевые дополнения в свой экземпляр виртуального хоста. Кроме того, я бы убедился, что все разрешения установлены правильно.
Для пояснения: где находится файл, к которому вы обращаетесь? Если вы обращаетесь к какому-либо сгенерированному / объединенному файлу из typo3 (например, typo3temp / compress), это может быть проблемой, эти файлы сохраняются там, но их источник находится где-то в другом месте.
У меня есть внешний файл JavaScript, и как в FireFox, так и в Chrome, будут ли очищены все данные для просмотра, он НЕ будет обновляться ни на что. Я считаю, что что-то произошло, когда я сделал резервную копию своего файла, который я просто добавил "_thedate" в конец имени. Затем сохраните как исходное имя.
Теперь я не могу избавиться от старого JS независимо от того, что, если я не изменю имя файла, которое я действительно не хочу делать, или добавьте script на страницу PHP, которая толпит его.
Кто-нибудь знает это решение?
15 Answers 15
You are sure you are linking to the same file and then editing that same file?
On some browser, you can use CTRL F5 to force a refresh (on the PC). On the Mac, it is Cmd Shift R
Firebug also has a net tab with "Disable Browser Cache".
ОТВЕТЫ
Ответ 1
Вы уверены, что вы связываетесь с одним и тем же файлом, а затем редактируете тот же файл?
В каком-то браузере вы можете использовать CTRL F5 для принудительного обновления.
Firebug также имеет вкладку net с "Отключить кеш браузера"
Update 2017:
If you use the Google Chrome debugger, it is the same, you can go to the Network section and make sure the "Disable cache (while DevTools is open)" is checked, in the Settings of the debugger panel.
Also, when you link the JavaScript file, use
or v=2 , and so forth, when you definitely want to refresh the file. Or you can go to the console and do a Date.now() and get a timestamp, such as 1491313943549 , and use
Some building tools will do that automatically for you, or can be configured to do that, making it something like:
which essentially will bust the cache.
Note that when you use the v=2 or t=1491313943549 , or main.742a4952.js , you also have the advantage that for your users, they definitely will get the newer version as well.
У меня есть внешний файл JavaScript, и в FireFox или Chrome, все ли данные для просмотра очищены, он НЕ будет обновляться, несмотря ни на что. Я полагаю, что что-то произошло, когда я сделал резервную копию своего файла, и я просто добавил «_thedate» в конец имени. Затем Сохранить как вернуться к исходному имени.
Теперь я не могу избавиться от старого JS, несмотря ни на что, если я не изменю имя файла, чего я действительно не хочу делать, или добавлю скрипт на страницу PHP, которая заполняет его.
Кто-нибудь знает решение этого?
Вы уверены, что ссылаетесь на тот же файл, а затем редактируете этот же файл?
В некоторых браузерах вы можете использовать CTRL F5 для принудительного обновления (на ПК). На Mac это Shift Cmd R
Firebug также имеет сетевую вкладку с «Отключить кэш браузера»
Update 2020:
If you are using Chrome and the DevTools is open, you can click and hold the Refresh icon in front of the address bar, and a box will pop up, and you can choose to "Hard Reload" or even "Empty Cache and Hard Reload":
Обновление 2020:
Если вы используете Chrome и открыты DevTools, вы можете щелкнуть и удерживать значок «Обновить» перед адресной строкой, и появится всплывающее окно, и вы можете выбрать «Аппаратная перезагрузка» или даже «Очистить кеш и жестко перезагрузить». ":
Обновление 2020:
Если вы используете Chrome, вы можете нажать и удерживать значок «Обновить» перед адресной строкой, и появится всплывающее окно, и вы можете выбрать «Жесткая перезагрузка» или даже «Очистить кэш и Жесткая перезагрузка» (похоже удаляется в Chrome версии 80.x):
14 ответы
Вы уверены, что ссылаетесь на один и тот же файл, а затем редактируете тот же файл?
В некоторых браузерах вы можете использовать CTRL F5 для принудительного обновления (на ПК). На Mac это Cmd Shift R
Firebug также имеет сетевую вкладку с «Отключить кеш браузера».
Но я хочу предупредить: даже если вы можете принудительно обновить, как вы узнаете, что ваши клиенты получают последнюю версию? Так что вам нужно проверить, а не просто удостовериться, что вы и ваш менеджер программы можете сделать полное обновление и просто пойти домой и получить зарплату в следующем месяце. Если вы хотите выполнить работу, которая изменит мир к лучшему или сделает мир немного лучше, чем вы его создали, вам нужно больше исследовать, чтобы убедиться, что это работает и для ваших клиентов (иначе, иногда клиент может звоните в техподдержку, и техподдержка может прочитать скрипт "очистите куки и все заработает", что со мной иногда случается). Некоторые методы внизу этого поста могут гарантировать, что клиенты получат последнюю версию.
Обновление 2017:
Если вы используете отладчик Google Chrome, он тот же, вы можете перейти в раздел «Сеть» и убедиться в том, что «Отключить кеш (когда открыт DevTools)», в настройках панели отладчика.
Кроме того, когда вы связываете файл JavaScript, используйте
Или v=2 и т. д., когда вы определенно хотите обновить файл. Или вы можете перейти к консоли и выполнить Date.now() и получить метку времени, например 1491313943549 , и использовать
Некоторые инструменты для сборки будут делать это автоматически или могут быть настроены для этого, делая что-то вроде:
Который по сути разорит кеш.
Обратите внимание , что когда вы используете v=2 или t=1491313943549 , или main.742a4952.js , у вас также есть преимущество в том, что для ваших пользователей они определенно получат более новую версию, как хорошо.
Переименуйте ваш файл js во что-то другое временно. Это единственное, что сработало для меня.
У меня была эта проблема, и я решил ее в Chrome, просто отключив кэш: - нажмите F12; - перейти на вкладку Сеть; - Нажмите «Отключить кэш».
Вы на 100% уверены, что ваш браузер даже загружает скрипт? Перейдите на свою страницу в Firefox и используйте консоль в Firebug, чтобы проверить, был ли загружен скрипт или нет.
1. Очистить кэш браузера в инструментах разработчика браузера 2. Вкладка «Под сетью» - выбрать опцию «Отключить кэш» 3. Перезапустить браузер 4. Принудительно перезагрузить файл Js, команда + shift + R в mac Убедитесь, что новая война правильно развернута на стороне сервера.
Я сходил с ума, пытаясь обновить свои js-файлы, и я попробовал все. Затем я проверил заголовок и вспомнил, что использовал Cloudflare!
В Cloudflare вы можете использовать режим dev для отключения прокси.
Немного опоздал на вечеринку, но если вы добавите это в свой html, он не позволит вашему сайту обновить кеш. Загрузка сайта занимает немного больше времени, но в целях отладки он мне нравится. Взято из этого ответа: Как программно очистить кеш браузера?
Как насчет добавления '? 2' к тегу?
Сервер должен вернуть тот же файл с или без '? 2', но браузер должен увидеть его как другой файл и загрузить заново. Вы можете просто изменить эту строку запроса при каждом изменении файла.
Лучший способ обойти кеш браузера - добавить случайное число в путь к файлу js.
Пример в псевдокоде:
Это гарантирует, что ваш браузер всегда перезагружает файл, потому что он думает, что это другой файл из-за случайного числа в URL.
Сервер всегда будет возвращать файл и игнорировать то, что следует после «?».
Решение, которое я использую. Использование firefox
1. с помощью веб-разработчика -> Веб-консоль
2. откройте файл java-скрипта в новой вкладке.
3. Обновите новую вкладку, и вы должны увидеть новый код.
4. Обновите исходную страницу
5. Вы должны увидеть свои изменения.
У меня такая же проблема некоторое время, и мне удалось выяснить . И мой случай был, потому что у меня есть 2 JavaScript с одинаковым именем функции.
Я работаю над файлом javascript. При первых нескольких изменениях все работало нормально, но теперь, когда я вношу изменения и перезагружаю страницу, я получаю ошибку консоли браузера SyntaxError: illegal character , а когда я проверяю источник, я вижу старую версию моего файла с куча � в конце.
Я работаю над этим сайтом без проблем неделю или две. Однако на днях у меня была аналогичная проблема с файлом CSS. Думаю, я заставил его работать, переименовав файл, обновив и переименовав его. Он по-прежнему не обновляется должным образом, и, очевидно, это не практичный способ разработки.
Моя среда
- Я разрабатываю веб-сайт на Centos 7 под VirtualBox в Windows 7.
- Код моего сайта находится в общей папке. (В Windows доступно через Centos).
- Apache, PHP 7, MariaDB.
- TYPO3 8.7.3 CMS
- Я просматриваю свой сайт в локальном домене, определенном в моем файле хостов Windows.
Что я пробовал
Я думаю, это исключает, что это мой браузер. Я думаю, что переименование .htaccess должно исключить, что это CMS, но я не знаю, чтобы быть уверенным в этом.
Итак, что мне проверить дальше?
Изменить:
Также заметил, что если я редактирую свой файл, чтобы сделать его короче, он обрезает старый файл до длины нового файла.
Обновление 2017:
Если вы используете отладчик Google Chrome, это то же самое, вы можете перейти в раздел "Сеть" и убедиться, что "Отключить кеш (в то время как DevTools открыт)" отмечен в настройках панели отладчика.
Кроме того, когда вы связываете файл JavaScript, используйте
или v=2 и т.д., когда вы определенно хотите обновить файл. Или вы можете перейти на консоль и сделать Date.now() и получить временную метку, например 1491313943549 , и использовать
Некоторые инструменты построения сделают это автоматически для вас или могут быть настроены так, чтобы сделать что-то вроде:
который, по сути, испортит кеш.
Обратите внимание, что при использовании v=2 или t=1491313943549 или main.742a4952.js у вас также есть то преимущество, что для ваших пользователей они определенно получат и новую версию.
Ответ 2
Как добавить в тег '? 2'?
Сервер должен возвращать тот же файл с или без "? 2", но браузер должен видеть его как другой файл и загружать. Вы можете просто изменить эту строку запроса всякий раз, когда файл будет изменен.
Ответ 3
Ответ 4
Я использую это решение. Использование firefox
1. с помощью веб-разработчика → Веб-консоль
2. Откройте файл java- script на новой вкладке. 3. Обновите новую вкладку, где вы увидите новый код.
4. Обновить исходную страницу
5. Вы должны увидеть ваши изменения.
Ответ 5
Переименуйте файл js на что-то еще временно. Это единственное, что сработало для меня.
Ответ 6
Лучший способ браузеров - добавить случайное число в путь к файлу js.
Пример в псевдокоде:
Это гарантирует, что ваш браузер всегда перезагружает файл, потому что он считает его другим файлом из-за случайного числа в URL-адресе.
Сервер всегда будет возвращать файл и игнорировать то, что появляется после "?".
Ответ 7
У меня была эта проблема, и я решил ее в Chrome, просто отключив кэш: - нажмите F12; - перейти на вкладку Сеть; - Нажмите "Отключить кэш".
Ответ 8
Вы на 100% уверены, что ваш браузер даже загружает script? Перейдите на свою страницу в Firefox и используйте консоль в Firebug, чтобы проверить, загружен ли script или нет.
Ответ 9
У меня такая же проблема на некоторое время, и мне удается разобраться. И мое дело было в том, что у меня есть 2 javascript с тем же именем функции.
Ответ 10
Немного поздно для вечеринки, но если вы поместите это в свой html, он не позволит вашему веб-сайту обновлять кеш. Для загрузки сайта требуется немного больше времени, но для целей отладки мне это нравится. Из этого ответа: Как программно очистить кеш браузера?
Ответ 11
1. Очистить кэш браузера в инструментах разработчика браузера 2. Вкладка "Под сетью" - выбрать параметр "Отключить кэш" 3. Перезапустить браузер 4. Принудительно перезагрузить файл Js, команда + Shift + R в Mac Убедитесь, что новая война правильно развернута на стороне сервера.
Читайте также: