Остановите Chrome, кэширующий мои файлы JS - PullRequest
127 голосов
/ 06 декабря 2011

Я внесу изменения в мои файлы JS, но в браузере это не изменится, мне придется каждый раз переименовывать файлы, чтобы они перезагружались. Есть ли какая-то команда .htaccess, которую я могу добавить или что-то, чтобы остановить кеширование?

Он даже кэширует мое ядро ​​html-страниц. Мне нужно снова открыть весь браузер, чтобы увидеть изменения. Может ли быть проблема с сервером?

Ответы [ 13 ]

187 голосов
/ 06 декабря 2011

Вы можете щелкнуть значок настроек в правом верхнем углу ... | Больше инструментов | Инструменты разработчика | Сеть | Отключить кеш (пока открыт DevTools)

Для Windows это F12 или CTRL + SHIFT + I , в то время как на Mac CMD + SHIFT + I открывает DevTools.

Новый путь для обновления Chrome, сентябрь 2018:

Щелкните значок настроек в правом верхнем углу ... | Настройки | Предпочтения | Инструменты разработчика | Сеть | Отключить кеш (пока открыт DevTools)

58 голосов
/ 01 марта 2013

Более быстрый способ сделать это - щелкнуть правой кнопкой мыши значок обновления рядом с адресной строкой и выбрать Очистить кэш и перезагрузить аппарат

Просто убедитесь, что инструменты разработчика Chrome открыты. (Нажмите F12) Кстати ... Этот прием работает только в Chrome для Windows, Ubuntu и Mac OS

18 голосов
/ 06 декабря 2011

Удерживайте Shift при нажатии кнопки перезагрузки.

13 голосов
/ 06 декабря 2011

добавить Что-то вроде script.js?a=[random Number] со случайным числом, сгенерированным PHP.

Вы пробовали expire = 0, прагму "no-cache" и "cache-control = NO-CACHE"? (Я не знаю, что они говорят о сценариях).

11 голосов
/ 06 декабря 2011

Несколько идей:

  1. Когда вы обновляете свою страницу в Chrome, нажмите CTRL + F5, чтобы выполнить полное обновление.
  2. Даже если вы установите для expires значение 0,он все еще будет кэшироваться во время сеанса.Вам придется закрыть и снова открыть браузер.
  3. Убедитесь, что при сохранении файлов на сервере метки времени обновляются.Chrome сначала выдаст команду HEAD вместо полного GET, чтобы узнать, нужно ли снова загружать полный файл, а сервер использует отметку времени, чтобы увидеть.

Если вы хотите отключить кэшированиена вашем сервере вы можете сделать что-то вроде:

Header set Expires "Thu, 19 Nov 1981 08:52:00 GM"
Header set Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0"
Header set Pragma "no-cache"

In .htaccess

6 голосов
/ 01 мая 2014

Быстрые шаги:

1) Откройте панель инструментов разработчика, перейдя в меню Chrome -> Инструменты -> Инструменты разработчика

2) Нажмите на значок настроек справасторона (это винтик!)

3) Установите флажок «Отключить кэш (когда открыт DevTools)»

4) Теперь, когда панель инструментов запущена, просто нажмите «Обновить» и JS выигралне кэшируется!

2 голосов
/ 30 января 2018

Проблема в том, что Chrome должен иметь must-revalidate в заголовке Cache-Control`, чтобы перепроверить файлы, чтобы увидеть, нужно ли их повторно выбирать.

Вы всегда можете SHIFT-F5 и принудительно обновить Chrome, но если вы хотите исправить эту проблему на сервере, включите этот заголовок ответа:

Cache-Control: must-revalidate

Это говорит Chrome, чтобы проверить с сервером, и посмотреть, если есть более новый файл,Если есть более новый файл, он получит его в ответе.Если нет, он получит ответ 304 и гарантию того, что тот в кеше обновлен.

Если вы НЕ установили этот заголовок, то при отсутствии каких-либо других настроек, которые делают файл недействительным, Chrome никогда не проверит с сервером, чтобы узнать, есть ли более новая версия.

Вот сообщение в блоге , в котором обсуждается проблема.

2 голосов
/ 06 декабря 2011

При обновлении моих веб-приложений я буду либо использовать обработчик для возврата одного файла JS, чтобы избежать массивных попаданий на мой сервер, либо добавить к ним небольшую строку запроса:

<script type="text/javascript" src="/mine/myscript?20111205"></script>
1 голос
/ 08 февраля 2018

Я знаю, что это «старый» вопрос.Но головные боли при кешировании никогда не бывают.После кучи проб и ошибок я обнаружил, что один из наших провайдеров веб-хостинга через CPanel получил это приложение под названием Cachewall.Я просто нажал на Включить режим разработки и ... вуаля !!!Это сразу же остановило страдавшую боль :) Надеюсь, это поможет кому-то еще ... R

1 голос
/ 06 декабря 2011
<Files *>
Header set Cache-Control: "no-cache, private, pre-check=0, post-check=0, max-age=0"
Header set Expires: 0
Header set Pragma: no-cache
</Files>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...