Chrome Developer Tools кэширует старую версию JavaScript файлов

У меня возникает странная периодическая проблема с инструментами Chrome Developer, зависящими от старых версий файлов JavaScript. Я буду разрабатывать какое-то приложение JS, все, что жужжит, просто найдет, а потом все мои файлы JavaScript исчезнут из списка файлов JavaScript на вкладке "sources". Это моя первая подсказка, что что-то не так.

В конце концов я обнаружил, что Chrome Developer Tools, видимо, висит на старой версии файла JavaScript. Сам Chrome запрашивает и выполняет последнюю версию с сервера, но вы не можете отлаживать файл JavaScript.

Я сам "доказал", что это происходит из-за того, что он удалил какой-то конкретный файл JavaScript, который исчез из списка моих источников, и заменил его на один оператор console.log.

Затем я перезагрузил страницу и отметил, что оператор console.log появился в консоли JavaScript. Я также отметил на вкладке "Сеть", что файл JavaScript был успешно извлечен, и что то, что произошло на проводнике, содержало только оператор строки console.log.

Однако файл JavaScript все еще не отображался в списке источников, и если бы я нажал на имя файла в консоли (где он отображается справа от консоли, рядом с заявленным протоколом), то я прыгаю на вкладку sources и открыта старая версия файла JavaScript.

Этот файл JavaScript загружается на страницу с помощью обычного тега <script>. Он не загружается динамически, через другой script или через eval. Просто простой, ванильный тег <script>, который указывает на файл .js на веб-сервере.

Я пробовал:

  • Убедитесь, что "Отключить кеш (в то время как DevTools открыт)" проверяется в настройках DevTools.
  • В ручном режиме очистка кеша и файлов cookie в Chrome.
  • Перезапуск Chrome
  • Вручную загружать файл JavaScript на отдельной вкладке Chrome.
  • Отключение каждого добавленного расширения/приложения Chrome
  • Запуск страницы в режиме инкогнито
  • Снимите флажок "Включить исходные карты JavaScript" и "Включить исходные карты CSS"

Ни одно из них не изменило поведение. Вы можете смотреть видео, демонстрирующее это здесь, если вы мне не верите!

Я думаю, что это проблема Chrome, поскольку я могу использовать Firefox без этой проблемы... но мне очень нравятся инструменты для разработчиков Chrome и Chrome:-) Поэтому я хотел бы, чтобы это работало в Chrome...

Обновление Я сообщил об этом как об ошибке Chrome здесь. Если эта ошибка влияет на вас или важна для вас, пожалуйста, проголосуйте за нее и/или добавьте комментарии с дополнительной информацией.

Ответ 1

Google, похоже, исправил эту проблему. Это прекратилось для меня.

Ответ 2

Chrome DevTools отлично работает для меня. Когда я загружаю его для страницы, он помнит, что срок службы хрома зависит от того, какие источники у меня открыты; хотя это неправильно. Я вижу две отличия в prefs devtools: отключить кеш и включить карты. Поэтому я бы посоветовал:

1) снимите флажок отключить кеш (в то время как DevTools открыт), 2) (если 1 не работал) нажмите кнопку "Восстановить значения по умолчанию и перезагрузить".

Ответ 3

Некоторые редакторы кода, такие как файлы js rubyine cache.

Чтобы решить проблему для rubyine: File > Invalidate Cache/Restart

Ответ 4

Как предложено здесь https://groups.google.com/d/msg/google-chrome-developer-tools/2rolf--fJ3M/UTJQaZN3K28J, для среды разработки Я добавил эти заголовки при обслуживании sourcemap:

Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0

и, похоже, выполняет эту работу (по крайней мере пока).