Я тестирую html / js-код на своем локальном хосте (Windows 7, Chrome v79.0.3945.130 (64-битная версия)), и около 50% изменений временного кода не отражаются в браузере (я вижу это с помощью Dev Tools / Sources ).
В интернете есть масса советов, но ни один из них не работает:
- Щелкните правой кнопкой мыши по перезагрузке и выберите «Очистить кэш и полная перезагрузка» - не помогает в 30% случаев.
- Отключить кэш на вкладке Сеть в Chrome Dev Tools - не помогает.
- Добавить
<meta http-equiv="Cache-control" content="no-cache">
в шапку - не помогает. - Заменить
<script src="common.js"></script>
на<script src="common.js?blabla"></script>
- помогает в 60% случаев, но вам нужно делать это после каждого изменения - огромной рутины. Кроме того, он не работает с изменениями HTML. - Скопируйте файл в новый файл (например, index.html to index2.html) и замените имя файла в коде - всегда работает, но это еще большая работа.
Точно такая же проблема присутствует, когда я фиксирую код в github.io
Пожалуйста, помогите мне сделать так, чтобы сайт немедленно отражал изменения кода.
Изменить: я создал файл index3.html и поместил туда только "Привет мир". Открыл файл в браузере. Изменено на «hello world2» - браузер обновил контент. Изменено на «hello world3» - браузер по-прежнему отображал «hello world2» даже после нескольких перезагрузок и «Пустого кэша и полной перезагрузки». Я изменил на "привет мир4" - браузер все еще показывал "привет мир2". В течение 4 часов я сменил на «hello world5» - браузер по-прежнему показывает «hello world2». Этот файл я редактировал с помощью основного блокнота.
Edit2: Люди продолжают спрашивать, какой сервер я использую. Это выглядит как часть проблемы. К сожалению, я не знаю и не знаю, что именно мне нужно сделать, чтобы проверить это. Вот все, что я узнал до сих пор:
- У меня есть
inetpub/wwwroot
каталог, куда я помещаю html & js файлы, а затем открываю index.html в браузере по адресуhttp://localhost/
. - Моя сетевая панель в Devs Tools выглядит следующим образом: ссылка на изображение .
- Настройка сервера была очень быстрой и не требовала никакого дополнительного программного обеспечения для установки. Т.е. я не использую node.js.
- Там есть iisstart.htm,
inetpub/wwwroot
и когда яhttp://localhost/iisstart.htm
его открываю, там написано IIS7.
источник
index.html
на что-то вроде заголовкаX-Powered-By
или,Server
который может дать подсказку на веб-сервере. Поиск в Google по путиinetpub/wwwroot
к файлу сильно указывает на сервер IIS.Ответы:
Использование параметра - правильный путь! Здесь вы можете добавить номер версии, который вы изменяете только при больших изменениях вручную, и для отладки вы можете установить его в Date.time (), поэтому в вашем теге <head> это заставляет все кэшированные версии перезаписываться, так как параметр всегда новый один:
Надеюсь это поможет!
источник
На сервере Windows IIS7, работающем под управлением Windows 7, чтобы предотвратить кэширование вашего содержимого, необходимо внести некоторые изменения в один из ваших файлов конфигурации, который называется
web.config
. Файлы конфигурации для IIS 7 и более поздних версий находятся%WinDir%\System32\Inetsrv\Config folder
там, где%WinDir%
находится папка , в которой установлена Windows (обычноC:/Windows
).Создайте резервную копию вашего
web.config
файла перед редактированием, чтобы вы могли выполнить откат к нему, если изменения, внесенные в файл, повредят его.В вашем
web.config
файле просто добавьте следующее, чтобы предотвратить кеширование вашегоindex.html
:Получил путь к
web.config
файлу отсюда: Windows Doc: Справочник по настройкеПолучил конфигурацию для кеша выше отсюда: Как отключить кеширование одностраничного HTML-файла приложения, обслуживаемого через IIS?
источник
projectName/index.html
, который я скопировал из URL в своем браузереhttp:/localhost/projectName/index.html
. Результат - не влияет на проблему кеширования.web.config
файл в корневую папку вашего сайта (папку, в которой находится ваш сайт) и изменить путь обратно на justindex.html
и посмотреть, работает ли он.У меня была такая же проблема, и это мой контрольный список:
<%Response.Expires=1440%>
во многих строках ASP-код, и он преодолевал все остальные настройки! В phpsession_cache_expire
может сделать то же самое.http-equiv="Cache-control"
заголовки html (вы прошли этот тест!).Наконец, я должен сказать, что во всех вышеперечисленных ситуациях проверка отключения кэша на вкладке newtwork в консоли Chrome всегда позволяла мне просматривать свежую версию страниц, однако это полезно только для целей отладки, и посетители этого не делают!
источник
В конкретном случае с использованием Google Chrome попробуйте следующее: Откройте Инструменты разработчика -> Перейдите на вкладку «Сеть». Установите флажок «Отключить кэш», после чего обновите страницу.
Однако для того, чтобы распространять изменения среди своих пользователей без необходимости их жесткого обновления страницы и т. Д., Необходимо добавлять версии файлов в конце каждого ссылочного файла для файлов, которые часто изменяются (как вы указали). Например:
v=20b379f72a37
конце добавляется автоматически сгенерированный файловый хэш содержимого файла.источник
Это длинный путь - но какой редактор / IDE вы используете? Кроме того, какие изменения вы вносите в ваш index.html?
Не могли бы вы привести примеры таких правок, которые не отображаются при сохранении и попытке загрузить файл?
Я хотел бы попытаться воспроизвести вашу проблему. Из того, что люди предлагают, не похоже, что проблема в самом коде. Я подозреваю, что это экологическая проблема, но мне нужно больше информации от вас, чтобы подтвердить мои подозрения.
источник
То, что вы пишете в HTML мета, является рекомендацией для браузеров, а не строгой инструкцией. Если в браузере включено строгое кэширование, это не поможет.
Решения хорошо описаны: https://curtistimson.co.uk/post/front-end-dev/what-is-cache-busting/
Я предпочитаю на стороне сервера добавлять в скрипты версию с датой последнего обновления самого файла.
Где 1579780745150 - Unix Timestamp обновляет сам файл myScript.js . Работает только со своими файлами, но внешние не нужны. Чаще всего в названии файла указывается версия.
источник
Это, вероятно, действительно расстраивает, и не похоже, что вы делаете что-то не так.
Возможно, проблема в том, что что-то между вашим браузером и файлом сценария, который вы вызываете, выполняет некоторое кэширование.
Чтобы определить, что это, позвольте мне спросить, как вы просматриваете локальный URL-адрес?
Примеры:
Если вы работаете,
file://path/to/file.html
это означает, что вы не просматриваете веб-сервер / прокси. Если это так,http://[something]/file.html
то вы используете какой-то веб-сервер, и это, вероятно, виновник. Ищите какие-то настройки, где вы можете отключить кеширование.Если вы не используете веб-сервер и буквально просматриваете локальный html-файл без веб-сервера, то я бы предположил, что виновником является браузер. Если это так, я бы предложил отключить кеширование в браузере, как предложил Мартин Шишков .
источник
http://localhost/ProjectName/index.html
где этот параметр , где вы можете отключить кэширование может быть?file://path/to/projectName/index.html
. Это удалит веб-сервер из уравнения. Чтобы продолжить использование IIS и просто исправить кэш, обратитесь к этой статье: support.microsoft.com/en-us/help/247404/…Chrome делает это, когда файл не слишком сильно изменился, не зная, что это значит, он будет использовать «скомпилированную» версию кэша. Для html это означает разобранный дон. Для предварительно скомпилированного кода JS и т. Д.
Обычно есть способы решения этой проблемы, многие фреймворки используют хеш внутри имен файлов, например:,
main.md5hash.js
потому что изменение имени файла делает недействительным любой кеш.Тогда вы останетесь с HTML, возможно, не обновляется. И чтобы быть ясным, я не уверен, вы всегда можете добавить комментарий со случайным блобом ... как свидание.
источник
Основываясь на обновлениях вашего ответа, я бы сказал, что ваша проблема вызвана тем, что IIS v7 использует вашу память ПК для кэширования, а не локального жесткого диска, поэтому
Hard reload
и все остальные методы, похоже, не работают должным образом.Я мог бы придумать 3 решения:
1. Исправление проблемы с кешем IIS: (не проверено из-за того, что у меня нет компьютера с IIS)
extension
, для которых вы хотите отключить кеширование, т..aspx
Е. .Css, .js и т. Д.Источник решения - узнайте больше о IIS 7 Cache
2. Использование некоторых альтернатив IIS Существует немало, но я бы порекомендовал (исходя из моего опыта) WAMP или XAMPP. Оба предоставят вам лучшую «среду разработки» и оба будут поддерживать Windows 7. Кроме того, если вы знакомы с VS Code вы можете просто использовать расширение Live Server .
3. Используйте режим Chrome Incognito во время разработки. (Не уверен, что это работает для IIS7)
источник
.js
файлами? это зависит от того, какие изменения вы делаете.