Як змусити браузер 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: \ Користувачі \ xxx \ AppData \ Local \ Google \ Chrome \ Application \ chrome.exe) У поле аргументів командного рядка поставте -incognito
  3. Використовували інструменти для розробників Chrome, натискайте на піктограму "шестірні", натискаєте "Відключити кеш".

Здається, нічого не працює, якщо я вручну не припиняю налагодження, (закриваю з Chrome), не перезавантажую програму (у налагодженні).

Чи є спосіб змусити Chrome завжди перезавантажувати всі зміни css та перезавантажувати .css файл?

Оновлення:
1. Зміни стилю в моєму .aspx-файлі з’являються під час оновлення. Але змін у файлі .css не відбувається. 2. Це додаток ASP.NET MVC4, тому я натискаю на гіперпосилання, яке робить GET. З цим я не бачу нового запиту на таблицю стилів. Але натиснувши F5, .css файл перезавантажується і код статусу (на вкладці мережі) дорівнює 200.


4
f12 -> мережа -> клацніть правою кнопкою миші -> очистити кеш браузера (мені це не подобається, тому я використовую firefox з firebug)
— thkang

Я теж спробував це. Це, здається, не працює.
— duyn9uyen

ви спробували оновити його після всіх найголовніших клацань правою кнопкою миші та клацання?
— thkang

Так. Я також змінив свій файл .aspx. Він підхопив зміни та рядкові зміни css, тільки не змінив файл .css.
— duyn9uyen

на тій же вкладці мережі, ви можете побачити запис вашого .cssфайлу - я не знаю, asp, тому я не можу бути впевнений, але на моєму сервері python flask dev-код, кешований записами, код статусу становить 304, тоді як повторно завантажені файли мають 200 Перевірте свій код статусу та запитайте час, щоб побачити, чи це проблема на сервері.
— thkang

Відповіді:


148

Є набагато складніші рішення, але дуже легкий, простий - просто додати рядок випадкових запитів до вашої CSS.

Як от src="/css/styles.css?v={random number/string}"

Якщо ви використовуєте php або іншу мову на стороні сервера, ви можете це зробити автоматично time(). Так було бstyles.css?v=<?=time();?>

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


17
просто не використовуйте це у виробництві, інакше ви втратите можливості кешування вашого css. що добре.
— Барт Калікто

3
Що робити, якщо ви використовуєте програму на одній сторінці та вам потрібно сказати програмі перезавантажити CSS, оскільки версія змінилася?
— Nathan C. Tresch

10
@ NathanC.Tresch ви змінюєте версію, коли версія змінюється, замість того, щоб робити випадковий / часовий рядок, який змінюється щоразу. Найкращим підходом буде використання контрольної суми самого файлу css.
— Барт Калікто

Чи можете ви пояснити цю відповідь для початківців? Як саме ви "просто додасте рядок випадкових запитів"? Початківці хочуть мати можливість бачити зміни і в своїй роботі, і більшість з нас не мають поняття, що означає щось, або як шукати відповідь.
— randy

@randy Я наводив приклад, використовуючи php, в якому ви надаєте поточну мітку часу як параметр запиту. Ви можете дослідити, як зробити щось подібне, використовуючи будь-яку мову, яку ви маєте на бекенді. Ви також можете зробити це через крок грунтування / глотки, якщо у вас є це.
— Ансон

207

Щоб змусити хром перезавантажувати css та js:

Варіант Windows 1: CTRL+ SHIFT+ R
Опція Windows 2: SHIFT+F5

ОС X: ⌘+ SHIFT+R

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


Оригінальна відповідь:

Chrome змінив поведінку. Ctrl+ Rзробимо це.

В ОС 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 Добрий момент! Схоже, вони знову змінюють поведінку. Це додано до хромованої версії Windows, ще не доступної на mac.
— Барт Калікто

4
Ctrl + R також працює у Firefox. Дякуємо, що звільнили мене від випадкової URL-адреси та інших речей.
— Зеешанеф

30
CTRL + R не працює для мене, але CTRL + SHIFT + R робить це
— Пол Слокум

139

[ЧИТАТИ ОНОВЛЕННЯ ВНУТРІ]

Найпростіший спосіб, який я знайшов, - це в налаштуваннях Chrome DevTools. Натисніть на значок шестірні (або 3 вертикальних точки в останніх версіях) у верхньому правому куті DevTools, щоб відкрити діалогове вікно "Налаштування". Там встановіть прапорець "Вимкнути кеш (поки DevTools відкритий)"


ОНОВЛЕННЯ: Тепер це налаштування переміщено. Його можна знайти на вкладці «Мережа», це прапорець із написом «Вимкнути кеш». введіть тут опис зображення


15
Це найкраще рішення IMHO: вам не доведеться возитися зі своїм власним кодом, щоб надати випадкове значення URL-адресі css.
— Гійом

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 вашого сайту

Це не дозволить браузеру кешувати файл, з часом файли не зберігатимуться у тимчасових файлах веб-переглядача, тому кеш-пам'ять не потрібна, тому перезавантаження не потрібно :)

Я впевнений, що це зробить :)


1
Це має бути прийнятою відповіддю. Для мене рішення @anson не спрацювало.
— Pierrick Martellière

8

У моєму випадку в налаштуваннях DevTools Chrome просто встановити "Вимкнути кеш (поки DevTools відкритий)" не працює, потрібно встановити прапорець "Увімкнути вихідні карти CSS" та "Автоматично перезавантажити створений CSS", які вказані у джерелі групи, щоб усунути цю проблему кешу.


6

Натисніть SHIFT+F5 .

Для мене це працює з версією Chrome 54.


Дякую. Незважаючи на те, що ctrl-r є популярною відповіддю в цій темі, для мене працював лише shift-f5 (Chromium 55).
— користувач2662680

5

я зіткнувся з такою ж проблемою тут! але я впевнений, моя роздільна здатність краща за всі наведені вище приклади, просто зробіть це,

  1. Підтягніть консоль розробника Chrome, натиснувши F12
  2. Клацніть правою кнопкою миші на кнопку перезавантажити у верхній частині браузера та виберіть "Порожній кеш і жорстке перезавантаження".

Це все!


4

За допомогою macOS я можу змусити Chrome перезавантажувати файл CSS, виконуючи ці дії

⌘+ SHIFT+R

Цю відповідь знайшли в коментарях тут, але вона заслуговує на більшу експозицію.


3

Поточна версія Chrome (55.x) не перезавантажує всі ресурси при перезавантаженні сторінки (Command + R) - і це не корисно для налагодження файлу .css.

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

Порядок примусового перезавантаження .css-файлу на Mac (ярлик клавіатури / Chrome): Command + Shift + R


3

Я використовую Edge Version 81.0.416.64 (Official build) (64-розрядна версія) та її основу на проекті з відкритим кодом Chromium.

Натисніть, F12щоб перейти до Dev Tools.
Клацніть На вкладці Мережа
перевірити відключити кеш

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


2

Я знаю, що це давнє запитання, але якщо хтось ще шукає, як перезавантажити лише один зовнішній файл css / js, зараз найпростішим способом у Chrome є:

  1. Перейдіть на вкладку Мережа в DevTools
  2. Клацніть правою кнопкою миші на ресурсі та виберіть Replay XHR, щоб повторити запит

Переконайтесь, що вибрано параметр « Вимкнути кеш» , щоб примусити перезавантажити.


2

Для Chrome macOS:

  1. Відкрити інструменти для розробників cmd+ alt+i
  2. Клацніть три крапки у верхньому правому куті в інструментах для розробників
  3. Клацніть налаштування
  4. Прокрутіть униз до Network
  5. Увімкнути Disable cache (while DevTools is open)перегляд екрана: введіть тут опис зображення

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? Щось = випадкове значення" нічого не змінює в моєму досвіді підтримки клієнтів. Працює лише зміна імені.

Ще одне перейменування файлу. Я використовую Перезапис URL-адрес у 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 на вашому комп’ютері.


0

Найпростіший спосіб досягти поставленої мети - це відкрити нове вікно анонімного перегляду у вашому хромі або приватне вікно у firefox, яке за замовчуванням не кешуватиметься.

Ви можете використовувати це для цілей розробки, щоб вам не довелося вводити в проект проект якийсь запобіжний код кеш-пам'яті.

Якщо ви використовуєте IE, то, можливо, вам допоможе Бог!



0

Найпростіший спосіб на Safari 11.0 macOS SIERRA 10.12.6: Перезавантажити сторінку з Origin, ви можете скористатись довідкою, щоб дізнатися, де в меню воно знаходиться, або ви можете скористатися опцією швидкого доступу (alt) + команда + R.



-1

Якщо ви використовуєте SiteGround в якості своєї хостингової компанії, і жодне з інших рішень не спрацювало, спробуйте:

Від cPanel перейдіть до "ІНСТРУМЕНТІВ УДОБРЕННЯ САЙТА" та натисніть "SuperCacher". На наступній сторінці натисніть кнопку «Скинути кеш-пам'ять».


Ця відповідь не має нічого спільного ні з Visual Studio, ні з браузером Chrome. Також це питання було задано 4 роки тому, і вже було прийняте рішення. Будь-ласка, намагайтеся уникати "нарікань" питань до верху, надаючи відповіді на них, якщо питання ще не було позначено як вирішене, або ви не знайшли нове і вдосконалене рішення проблеми. Ознайомтеся з документацією щодо написання чудових відповідей на деякі поради щодо того, як підрахувати свої відповіді :)
— Obsidian Age

Привіт Обсидіан. Мої вибачення. Це перший раз, коли я опублікував тут. Я довго і наполегливо шукав рішення цієї проблеми. Прийнята відповідь не спрацювала для мене. Коли я знайшов рішення (за допомогою власного дослідження), я хотів «сплатити його», допомагаючи всім, хто стикається з цією проблемою, - навіть якщо їй чотири роки. Я не впевнений, чому моя дія тут може бути підставою для ляпання зап'ястя, як це мені здається законним. Тим не менш, я буду впевнений, щоб бути обережним у майбутньому (справді - я не маю на увазі це химерно). Дякую -Дон.
— Дон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.