Как заставить браузер Chrome перезагружать файл .css при отладке в Visual Studio?

151

В настоящее время я редактирую файл .css внутри Visual Studio 2012 (в режиме отладки). Я использую Chrome в качестве браузера. Когда я вносю изменения в файл .css моего приложения в Visual Studio и сохраняю, обновление страницы не загружается с обновленными изменениями в моем файле .css. Я думаю, что файл .css все еще кешируется.

Я пытался:

  1. CTRL / F5
  2. В Visual Studio 2012 перейдите в свойства проекта, вкладка «Веб». Выберите «Запустить внешнюю программу» в разделе «Действие запуска». Вставьте или выберите путь к Google Chrome (у меня есть C: \ Users \ xxx \ AppData \ Local \ Google \ Chrome \ Application \ chrome.exe) В поле Аргументы командной строки введите -incognito.
  3. Воспользовавшись инструментами разработчика Chrome, нажмите на иконку «gear», отметьте «Disable Cache».

Кажется, ничего не работает, если я не прекращаю отладку вручную (закрываю Chrome), перезапускаю приложение (в отладке).

Есть ли способ заставить Chrome всегда перезагружать все изменения CSS и перезагружать файл .css?

Обновление:
1. Изменения стиля в моем файле .aspx обнаруживаются при обновлении. Но изменений в .css файле нет. 2. Это приложение ASP.NET MVC4, поэтому я нажимаю на гиперссылку, которая выполняет GET. При этом я не вижу нового запроса на таблицу стилей. Но, нажав F5, файл .css перезагружается, и код состояния (на вкладке сети) равен 200.

duyn9uyen
источник
4
f12 -> сеть -> щелчок правой кнопкой мыши -> очистить кеш браузера (мне это не нравится, поэтому я использую firefox с firebug)
спасибо
Я тоже это попробовал. Это не похоже на работу.
duyn9uyen
Вы пытались обновить его после всех щелчков правой и правой кнопки?
Спасибо
Да. Я также внес изменения в мой файл .aspx. Он взял изменения и встроенные изменения CSS, но не изменения в файле .css.
duyn9uyen
на той же вкладке сети вы можете увидеть запись вашего .cssфайла - я не знаю asp, поэтому не могу быть уверен, но на моем python-фляге код состояния кэшированных записей на сервере dev равняется 304, а для повторно загруженных файлов - 200 Проверьте свой код состояния и запросите время, чтобы увидеть, если это проблема на стороне сервера.
Спасибо

Ответы:

148

Есть гораздо более сложные решения, но очень простое и простое - просто добавить случайную строку запроса в ваш CSS-код.

Такие как src="/css/styles.css?v={random number/string}"

Если вы используете php или другой серверный язык, вы можете сделать это автоматически с time(). Так было быstyles.css?v=<?=time();?>

Таким образом, строка запроса будет новой каждый раз. Как я уже сказал, есть гораздо более сложные решения, которые более динамичны, но в целях тестирования этот метод является лучшим (IMO).

Энсон
источник
17
просто не используйте это на производстве, иначе вы потеряете возможности кэширования вашего css. Что хорошо.
Барт Каликсто
3
Что если вы используете одностраничное приложение и вам нужно сказать приложению перезагрузить CSS, потому что версия изменилась?
Натан С. Треш
10
@ NathanC.Tresch вы меняете версию при изменении версии вместо того, чтобы делать случайную / временную строку, которая меняется каждый раз. Наилучшим подходом будет использование контрольной суммы самого файла CSS.
Барт Каликсто
Можете ли вы уточнить этот ответ для начинающих? Как именно вы «просто добавили бы случайную строку запроса»? Начинающие тоже хотят видеть изменения в своей работе, и большинство из нас не имеет ни малейшего представления, что это значит или как искать ответ.
Рэнди
@randy Я привел пример использования php, в котором вы отображаете текущую метку времени в качестве параметра запроса. Вы можете исследовать, как сделать нечто подобное, используя любой язык, который у вас есть на сервере. Вы также можете сделать это через шаг grunt / gulp, если он у вас есть.
Ансон
208

Чтобы заставить chrome перезаписать CSS и JS:

Вариант Windows 1: CTRL+ SHIFT+ R
Вариант Windows 2: SHIFT+F5

OS X: + SHIFT+R

Обновлено как заявлено @PaulSlocum в комментариях (и многие подтвердили)


Оригинальный ответ:

Хром изменил поведение. Ctrl+ Rсделаю это.

На OS X: +R

Если у вас возникли проблемы с перезагрузкой файлов css / js, откройте инспектор ( CTRL+ SHIFT+ C) перед выполнением перезагрузки.

Барт Каликсто
источник
26
И тут я нажимал CTRL + F5 как сумасшедший ... Спасибо.
Аликс Аксель
3
Еще один совет: code-pal.com/quick-tip-clear-cache-hard-refresh-on-chrome
duyn9uyen
3
@ duyn9uyen Хорошая мысль! Похоже, они снова меняют поведение. Это добавлено в версию Chrome для Windows, пока не доступно на Mac.
Барт Каликсто
4
Ctrl + R также работает в Firefox. Спасибо за избавление от случайного URL и других вещей.
Зеешанеф
30
CTRL + R не работает для меня, но CTRL + SHIFT + R делает это
Пол Слокум
139

[ПРОЧИТАЙТЕ ОБНОВЛЕНИЕ НИЖЕ]

Самый простой способ, который я нашел, это настройки Chrome DevTools. Нажмите на значок шестеренки (или 3 вертикальные точки в более поздних версиях) в правом верхнем углу DevTools, чтобы открыть диалоговое окно «Настройки». Там поставьте галочку: «Отключить кеш (пока открыт DevTools)»


ОБНОВЛЕНИЕ: Теперь этот параметр был перемещен. Его можно найти на вкладке «Сеть», это флажок «Отключить кэш». введите описание изображения здесь

Дипак Джой
источник
15
ИМХО, это лучшее решение: вам не нужно возиться со своим собственным кодом, чтобы предоставить случайное значение вашему CSS-URL.
Гийом
2
Отличный ответ! ... работал как шарм!
Ани
1
Я также нашел, что это лучшее решение.
Джо Хуанг,
3
Это было перенесено в более поздние версии Chrome: перейдите на вкладку Сеть и отметьте «Отключить кэш» в заголовке.
Джейсон Клеменс
Методы Ctrl + Shift + R и Shift + F5 у меня не работают - думаю, что-то изменилось в Chrome в последнее время. Этот метод все еще прекрасно работает. @JasonClemens: опция «Отключить кеш» есть как на вкладке «Сеть», так и в настройках.
Амос М. Карпентер
11

Вы имеете дело с проблемой кеша браузера.

Отключите кеш на самой странице. Это не сохранит файл поддержки страницы в браузере / кэше.

<meta http-equiv="cache-control" content="max-age=0" />
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="expires" content="Tue, 01 Jan 1990 12:00:00 GMT" />

Этот код вам нужно / нужно вставить в headтег страницы, которую вы отлаживаете, или в headтег master pageвашего сайта

Это не позволит браузеру кэшировать файл, в конечном итоге файлы не будут храниться во временных файлах браузера, поэтому нет кэша, поэтому перезагрузка не потребуется :)

Я уверен, что это будет делать :)

MarmiK
источник
1
Это должен быть принятый ответ. Решение @anson не сработало для меня.
Пьеррик Мартелье
8

В моем случае, в настройках Chrome DevTools просто установить «Отключить кеш (когда DevTools открыт)» не работает, нужно проверить «Включить исходные карты CSS» и «Автоматически перезагружать сгенерированный CSS», которые перечислены в источнике группа, чтобы эта проблема с кешем исчезла.

gustavH
источник
6

Нажмите SHIFT+ F5.

Это работает для меня с Chrome версии 54.

user2580062
источник
Спасибо. Несмотря на то, что ctrl-r был популярным ответом в этой теме, у меня работал только shift-f5 (Chromium 55).
user2662680
5

я столкнулся с той же проблемой здесь! но я уверен, что мое разрешение лучше всех приведенных выше примеров, просто сделайте это,

  1. Откройте консоль разработчика Chrome, нажав клавишу F12.
  2. Щелкните правой кнопкой мыши по кнопке перезагрузки в верхней части браузера и выберите «Очистить кэш и полная перезагрузка».

Вот и все!

Оптимаз ИД
источник
4

С macOS я могу заставить Chrome перезагрузить файл CSS, выполнив

+ SHIFT+R

Нашел этот ответ, похороненный в комментариях здесь, но он заслуживал большего внимания.

AlexG
источник
3

Текущая версия Chrome (55.x) не перезагружает все ресурсы при перезагрузке страницы (Command + R) - и это бесполезно для отладки файла .css.

Command + R отлично работает, если вы хотите отлаживать только файлы .html, .php, .etc, и работает быстрее, потому что работает с локальными / кэшированными ресурсами (.css, .js). Вручную удалять кеш браузера для каждой итерации отладки не удобно.

Процедура принудительной перезагрузки .css файла на Mac (сочетание клавиш / Chrome): Ctrl + Shift + R

Логическая индустрия
источник
3

Я использую Edge Version 81.0.416.64 (Официальная сборка) (64-разрядная версия) и основана на проекте с открытым исходным кодом Chromium.

Нажмите, F12чтобы войти в Dev Tools.
Нажмите вкладку «Сеть» и «
Проверка».

введите описание изображения здесь

Крис Катиньяни
источник
2

Я знаю, что это старый вопрос, но если кто-то все еще ищет, как перезагрузить только один внешний файл css / js, самый простой способ теперь в Chrome:

  1. Перейти на вкладку Сеть в DevTools
  2. Щелкните правой кнопкой мыши по ресурсу и выберите Replay XHR, чтобы повторить запрос.

Убедитесь, что для принудительной перезагрузки выбран параметр « Отключить кэш» .

Ivanhoe
источник
2

Для macOS Chrome:

  1. Инструменты для разработчиков cmd+ alt+i
  2. Нажмите три точки в правом верхнем углу в инструментах разработчика
  3. Нажмите настройки
  4. Прокрутите вниз до Network
  5. Включить Disable cache (while DevTools is open)см. Скриншот: введите описание изображения здесь
pbaranski
источник
1

Зачем нужно обновлять всю страницу? Просто обновите только CSS-файлы без перезагрузки страницы. Это очень полезно, например, когда вам приходится ждать длинного ответа от БД. Как только вы получите данные из БД и заполните страницу, отредактируйте ваши CSS-файлы и перезагрузите их в Chrome (или в Firefox). Для этого вам нужно установить расширение CSS Reloader . Firefox версия также доступна.

Евгений Набоков
источник
1

Вы можете скопировать и вставить этот скрипт в консоль Chrome, и он заставляет ваши CSS-скрипты перезагружаться каждые 3 секунды. Иногда я нахожу это полезным, когда я улучшаю стили CSS.

var nodes = document.querySelectorAll('link');
[].forEach.call(nodes, function (node) {
    node.href += '?___ref=0';
});
var i = 0;
setInterval(function () {
    i++;

    [].forEach.call(nodes, function (node) {
        node.href = node.href.replace(/\?\_\_\_ref=[0-9]+/, '?___ref=' + i);
    });
    console.log('refreshed: ' + i);
},3000);
Мартин Всетичка
источник
1

Я решил этот простой трюк.

<script type="text/javascript">
  var style = 'assets/css/style.css?'+Math.random();;
</script>

<script type="text/javascript">
  document.write('<link href="'+style+'" rel="stylesheet">');
</script>
Шахид Чаудхари
источник
1

Все еще проблема.

Использование таких параметров, как "..css ?thing = random-value" ничего не меняет в моей поддержке клиентов. Работает только смена имени.

Еще один способ переименования файлов. Я использую URL Rewrite в IIS. Иногда Исипи Геликона переписывают.

Добавить новое правило.

+ Name: lame-chrome-fix.
+ Pattern: styles/(\w+)_(\d+)
+ Rewrite URL: /{R:1}.css

Примечание: я резервирую использование нижнего регистра, чтобы отделить имя от случайного числа. Может быть что-нибудь еще.

Пример:

<link href="https://stackoverflow.com/styles/template_<% 
Response.Write( System.DateTime.UtcNow.ToString("ddmmyyhhmmss")); %>" 
type="text/css" />

(Нет папки стилей, это просто часть имени шаблона)

Выходной код как:

<link href="/styles/template_285316115328" 
rel="stylesheet" type="text/css">

Перенаправить как:

(R: 1 = шаблон)

/template.css

Только объяснение длинное.

Ян Андерсен
источник
0

Просто возникла проблема, когда один человек, работающий с Chrome (на Mac), внезапно перестал загружать файл CSS. CMD + R не работал вообще. Мне не нравятся вышеизложенные предложения, которые вызывают постоянную перезагрузку производственной системы.

Что работало, так это изменение имени файла CSS в файле HTML (и, конечно, переименование файла CSS). Это заставило Chrome получить последний файл CSS.

Ричард
источник
0

Если вы используете Sublime Text 3, при использовании системы сборки для открытия файла открывается самая последняя версия и предоставляется удобный способ загрузить его через [CTRL + B]. Чтобы настроить систему сборки, которая открывает файл в chrome:

  1. Перейти к «Инструменты»

  2. Наведите указатель мыши на «построить систему». В нижней части появившегося списка нажмите «Новая система сборки ...»

  3. В новой сборке системы тип файла:

    {"cmd": [ "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe", "$file"]}

** при условии, что путь, указанный выше в первом наборе кавычек, является путем к месту расположения chrome на вашем компьютере, если он не просто находит местоположение chrome и заменяет путь в первом наборе кавычек на путь к Chrome на вашем компьютере.

Шлок Натараджан
источник
0

Самый простой способ достижения вашей цели - это открыть новое окно инкогнито в вашем chrome или приватное окно в Firefox, которое по умолчанию не будет кэшироваться.

Вы можете использовать это в целях разработки, чтобы вам не приходилось вставлять какой-то случайный кеш-код в ваш проект.

Если вы используете IE, то да поможет вам Бог!

Anarach
источник
0

Ctrl + F5

Shift + F5

Обе работают

Эшвин Балани
источник
0

Самый простой способ в Safari 11.0 macOS SIERRA 10.12.6: перезагрузить страницу из Origin, вы можете использовать справку, чтобы узнать, где в меню она находится, или использовать сочетание клавиш (alt) + command + R.

Родольфо Пертуз
источник
-1

Chrome/firefox/safari/IE перезагрузит всю страницу с помощью этих ярлыков

Ctrl+ R (ИЛИ) Ctrl+F5

Надеюсь, это поможет вам!

Ведущий разработчик
источник
-1

Если вы используете SiteGround в качестве хостинговой компании и ни одно из других решений не помогло, попробуйте следующее:

От cPanel перейдите в «ИНСТРУМЕНТЫ УЛУЧШЕНИЯ САЙТА» и нажмите «SuperCacher». На следующей странице нажмите кнопку «Очистить кэш».

Дон
источник
Этот ответ не имеет ничего общего ни с Visual Studio, ни с браузером Chrome. Также этот вопрос был задан 4 года назад, и уже было принято решение. Пожалуйста, постарайтесь не «задевать» вопросы наверх, предоставляя ответы на них, если только вопрос не был помечен как решенный, или вы не нашли новое и улучшенное решение проблемы. Ознакомьтесь с документацией по написанию отличных ответов, чтобы узнать, как сделать так, чтобы ваши ответы
Обсидиановый возраст
Привет Обсидиан. Мои извинения. Это первый раз, когда я разместил здесь. Я искал долго и упорно для решения этой проблемы. Принятый ответ не работал для меня. Когда я действительно нашел решение (через свое собственное исследование), я хотел «заплатить вперед», помогая всем, кто сталкивается с этой проблемой - даже если ему четыре года. Я не уверен, почему мои действия здесь дали бы пощечину, так как это кажется мне законным. Тем не менее, я буду уверен, что буду осторожен в будущем (на самом деле - я не имею в виду это изворотливо). Спасибо -Дон.
Дон