Вимкнення кешу Chrome для розробки веб-сайтів


1607

Я змінюю зовнішній вигляд сайту (модифікації CSS), але не бачу результату в Chrome через дратівливого стійкого кешу. Я спробував Shift+ оновити, але це не працює.

Як я можу тимчасово відключити кеш або оновити сторінку якимось чином, щоб я міг бачити зміни?


185
Це, мабуть, найгірша помилка Chrome. Я витрачав занадто багато часу, цікавлячись, чому все виходить неправильним, лише щоб виявити, що - незважаючи на те, що змусив повне перезавантаження з ^ F5 - він використовує годинний старий ресурс.
Гленн Мейнард

45
Передбачається, що веб-переглядачі кешуватимуть. Пам'ятайте, що ваші користувачі також кешуватимуть - і тому вони можуть не бачити змін, які ви вносите після створення вашого веб-сайту. Спосіб цього уникнути - це версія ваших файлів. my_css.css? версія = щось_уніке. Якщо браузер не бачив версію до цього, він знову завантажує файл. something_unique, наприклад, може бути датою останньої модифікації.
користувач984003

34
@ user984003 Ctrl+Shift+Rабо Shift+Rмає змити кеш ...
Адоніс К. Какулідіс

19
@ user984003 Не, якщо я скажу їм не кешувати. Так, номер версії, що перебуває в кеш-пам'яті, відмінно підходить для остаточного випуску, тому що користувачі користуються, але коли я створюю новий сайт і хочу бачити додаткові зміни під час переходу, я не змінюю номер версії кожен раз . Тому я розвиваюся з Firefox - він має найнадійніші варіанти відключення кешу!
andrewb

11
@ user984003 так, браузери повинні кешувати ... під час перегляду. Розвиваючи, вам потрібно більше контролювати це.
ahnbizcad

Відповіді:


1976

Chrome DevTools може відключити кеш.

  1. Клацніть правою кнопкою миші та виберіть, Inspect Elementщоб відкрити DevTools. Або скористайтеся однією з наведених нижче комбінацій клавіш :
    • F12
    • Command+ Option+ iна Mac
    • Control+ Shift+ iв Windows або Linux
  2. Клацніть Network на панелі інструментів, щоб відкрити мережеву панель.
  3. Перевірте на Disable cacheпрапорець у верхній частині.

screenshot of development tools panel

Майте на увазі, як твіт від @ChromiumDev заявив, що цей параметр активний лише в той час як DevTools відкриті .

Зауважте, що це призведе до перезавантаження всіх ресурсів. Якщо ви бажаєте вимкнути кеш-пам'ять лише для деяких ресурсів, ви можете змінити заголовок HTTP який ваш сервер надсилає поруч із вашими файлами.

Якщо ви не хочете використовувати Disable cacheпрапорець, тривалим натисканням кнопки оновлення при відкритому DevTools буде показано меню з параметрами до Hard Reloadабо Empty Cache and Hard Reloadяке має мати подібний ефект. Прочитайте про різницю між варіантами . Доступні такі ярлики:

  • Command+ Option+ Rна Mac
  • Control+ Shift+ Rв Windows або Linux

long press


255
З мого досвіду, це налаштування (і всі налаштування на цій панелі) набуває чинності лише тоді, коли інструменти розробки відкриті.
Йоганн

28
@Steve Це не працює для мене. Я не отримую жодних змін, навіть не маючи Chrome 19.0.1084.52, і я встановив прапорець, щоб відключити кешування. Я спробував відкрити панель розробників. Я спробував із цим закрити. Я навіть спробував перезапустити браузер, а потім перезапустити комп’ютер. Здається, він продовжує надавати мені кешовану версію сторінки. Що я повинен зробити? Хром раніше мені створював подібні проблеми, тому я видалив усе, що стосується Google, з комп'ютера, а потім встановив хром назад. У ньому виправлено більшість речей, таких як "вкладка історії вічного завантаження". Я думаю, це все ще не працює.
Tgwizman

11
Я виявив, що це не працює при оновленні поточної сторінки після зміни налаштувань. Тільки коли я відправився, а потім знову повернувся, він почав працювати.
Метт Гібсон

3
... або ви могли просто налагоджувати в режимі анонімного перегляду! (який не кешує жодних файлів)
Kwame

5
ця настройка є найбільшою брехнею в історії веб-розробки. перезапустив мій комп’ютер, а хром досі показує неправильні результати, коли Firefox показує поточний css :(
Claudiu Creanga

247

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

Очищення кешу занадто дратує, коли потрібно очищати кеш 30 разів на годину .. тому я встановив розширення Chrome під назвою Classic Cache Killer, яке очищає кеш при кожному завантаженні сторінки.

Посилання для магазину Chrome (безкоштовно) (зараз без зловмисного програмного забезпечення!)

Тепер мій макет json, javascript, css, html та дані оновлюється щоразу при кожному завантаженні сторінки .

Мені ніколи не потрібно хвилюватися, якщо мені потрібно очистити кеш.

Для Chrome я знайшов близько 20 очищувачів кеш-пам'яті, але цей здався легким і нульовим зусиллям. Оновлення Cache Killer тепер може залишатися "завжди увімкненим".

Примітка. Я не знаю автора плагінів жодним чином. Я просто знайшов це корисним.


4
Так, параметр Інструменти Chrome Dev, здається, не працює для мене. Але вбивця кешу працює як принадність. Час перезавантаження значно повільніше, як-от 4-5 разів, але фактичне подання нового вмісту, очевидно, набагато швидше.
Брайс Джонсон

2
Очистити кеш і відключити кеш працює лише під час роботи на localhost, на моєму mac. Для інтернет-вмісту я освіжаю і освіжаю, сподіваючись побачити будь-які зміни. Це продовження - рятівник.
Сбпро

2
Я виявив, що використання Disable Cache викликає проблеми з локальним сховищем, зокрема з кутовим зберіганням з Auth0. Cache Killer прекрасно працює і не викликає проблем із локальним зберіганням.
trevorc

5
Видалено з магазину розширень Chrome через зловмисне програмне забезпечення :( Альтернативи?
Семен Вискубов

3
Закінчила писати свою, працює так само, але може перемикатись на вкладку. Ліцензія MIT і ніяких зловмисних програм, обіцяю 😎! github.com/themichaelyang/cache-clearer
Майкл Ян

199

Зображення меню перезавантаження

  1. Підтягніть консоль розробника Chrome, натиснувши, F12а потім (при відкритій консолі):

  2. Клацніть правою кнопкою миші (або утримуйте ліву кнопку миші) на кнопці перезавантаження у верхній частині браузера та виберіть "Порожній кеш-пам'ять та перезавантаження".

Це вийде за рамки "Hard Reload", щоб повністю виповнити кеш, гарантуючи, що все, завантажене через JavaScript або інше, також уникне використання кешу. Вам не доведеться возитися з налаштуваннями чи чим-небудь, це швидке рішення з 1 пострілом.


7
ну це точно не працює на mac, хоча я натиснув цю кнопку перезавантаження з різними комбінаціями клавіш;)
MJB

1
що таке Hard Reload?
ManirajSS

@ManirajSS: Він перезавантажить все і уникне використання кешу, але він не буде повторно завантажувати речі, завантажені javascript після завантаження сторінки. Я не впевнений, чому хто-небудь коли-небудь це використовував би, але, мабуть, ви можете придумати кілька кутових випадків, коли це було б корисно.
JackArbiter

2
Також не буде очищено кеш-пам'ять для кадрів всередині сторінки.
Пабло Мешер

7
Не впевнений, як довго це було правдою, але щодо Chrome 41 натисніть і утримуйте кнопку перезавантаження, що працює в ОС X, за умови, що у вас відкрите вікно інструментів для розробників.
Тім Кітінг

47

Є ще два варіанти, щоб назавжди відключити кешування сторінок у Chrome :

1. Відключіть кеш Chrome в Реєстрі

Відкрити реєстр (Пуск -> Команда -> Regedit)

Шукати: HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command

Змініть частину після ... chrom.exe "на це значення: –disable-application-cache –media-cache-size=1 –disk-cache-size=1 — "%1"

Приклад: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -disable-application-cache –media-cache-size=1 –disk-cache-size=1 — "%1"

ВАЖЛИВО:

  • є пробіл і дефіс після ... chrome.exe "

  • залиште шлях до chrome.exe таким, яким він є

  • Якщо ви копіюєте рядок, не забудьте перевірити, чи фактичні котирування.

2. Відключіть кеш Chrome, змінивши властивості ярлика

Клацніть правою кнопкою миші на піктограмі Chrome і в контекстному меню виберіть "Властивості". Додайте наступне значення шляху: –disk-cache-size=1

Приклад: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" –disk-cache-size=1

ВАЖЛИВО:

  • є пробіл і дефіс після ... chrome.exe "

  • залиште шлях до chrome.exe таким, яким він є


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

3
Хороша відповідь. Хоча для більшості людей відключення кешу - це лише тимчасова річ під час розробки. Постійне вимкнення цього режиму істотно уповільнить звичайний досвід перегляду та є поганим громадянством в Інтернеті, оскільки це навантажує зайве навантаження на веб-сервери, які ви відвідуєте.
danielson317

3
Я не погоджуюсь із поганою річчю про громадянство в Інтернеті, ми говоримо тут про створення якихось ярликів для роботи розробників. Тож це, безумовно, найкраща відповідь ІМХО. Просто маленька річ. Кожен раз, коли я копіюю це в Windows із цієї сторінки SO у якийсь ярлик Chrome, деякі символи не виходять правильно. Це правильні: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-application-cache --media-cache-size=1 --disk-cache-size=1Крім того, що є знаком раніше "%1"? Що я не знаю.
peter.petrov

32

Якщо ви не бажаєте редагувати налаштування Chrome, ви можете використовувати режим анонімного перегляду для тих же результатів.


22

Окрім опції вимкнення кешу (до якої ви потрапляєте за допомогою кнопки в нижньому правому куті вікна інструментів розробника - Інструменти | Інструменти для розробників або Ctrl+ Shift+ I), на мережевій панелі інструментів для розробників тепер можна клацнути правою кнопкою миші і виберіть "Очистити кеш" зі спливаючого меню.


22
  1. F12 щоб відкрити Chrome DevTools
  2. F1 щоб відкрити Налаштування DevTools
  3. Поставте прапорець Відключити кеш-пам'ять (поки DevTools відкритий), як показано нижче:

Зараз це знаходиться на вкладці Налаштування , яка є типовою. Можливо, вам доведеться прокрутити вниз. Цей прапорець було переміщено щонайменше пару разів з моменту запитання. Востаннє я перевірив, це було в середній колонці внизу. Якщо ви відкрили його на тоншому екрані, а в розділі Налаштування є два стовпці, це може бути вгорі праворуч. Не соромтесь оновлювати цю публікацію, якщо вона зміниться або прокоментується, і я оновлю публікацію.

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


2
Це робить те саме, що перевірити "Вимкнути кеш-пам'ять" безпосередньо на F12 Chrome Devtools, і він скинеться при перезавантаженні Chrome.
Богдан Вербенець

18

Замість того, щоб натиснути "F5", просто натисніть:

"Ctrl + F5"


6
Він також працює у Firefox (не тому, що це актуально для цього питання, але хтось може вважати його корисним)
Donald Duck

17

У Канарському каналі (і, можливо, буде продовжуватись розробка та стабільний канал), це є другим варіантом із лівого боку в розділі "Загальні".

Вимкнути кеш в каналі Chrome Canary

На додаток до цього, завжди є можливість перейти в режим інкогніто за допомогою Ctrl + Shift + N. Незважаючи на те, що, на жаль, також закінчується ваш сеанс.


4
На мій досвід, це працює лише під час відкриття інструментів розробки. Мене спантеличило, чому кеш все ще тримається на сторінках, поки я не зрозумів, що закрив інструменти розробки. Як не дивно, налаштування не перекриває все.
mbokil

Режим інкогніто, на жаль, кешує деякі зображення та файли.
GobSmack

16

Використання Ctrl+ Shift+ Rдля оновлення було приємно, але не отримав все необхідне. все-таки деякі речі не оновлюються, наприклад, дані, що зберігаються у js та css. знайшов рішення: панель інструментів google для веб-розробників Chrome . Після установки панелі інструментів виберіть параметри та "скиньте сторінку".


2
+1. Але все ще не ідеально: Для розробки на локальному комп’ютері кеш-пам'ять абсолютно не потрібний і створюватиме проблеми, тому я все ще зацікавився б функцією відключення, такою як firebug.
c089

15

Щоб було зрозуміло, прапорець відключити кеш-пам’ять у Chrome (v17 тут, але оскільки я вважаю, що v15) не знаходиться в основних інтерфейсах налаштувань. Він знаходиться в інтерфейсі налаштувань інструментів для розробників.

  1. У меню піктограми гайкового ключа вікна браузера (меню налаштувань) виберіть Інструменти → Інструменти розробника

  2. У інтерфейсі інструментів для розробників, що з’являється, натисніть значок шестірні внизу праворуч.

  3. Установіть прапорець "Вимкнути кеш-пам'ять" у розділі Мережа.


14

Вимкнути кеш-пам'ять у chrome працює лише тоді, коли у вас відкриті інструменти розробника


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

14

Поки помилка не виправлена, ви можете використовувати плагін Clear Cache Chrome, а також можете встановити ярлик клавіатури.

Після його встановлення натисніть правою кнопкою миші та перейдіть до параметрів:

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

Перевірка Automatically reload active tab after clearing data:

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

Виберіть Everythingдля періоду часу:

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

І тоді ви можете перейти до Меню => Інструменти => Розширення:

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

Клацніть ярлики на клавіатурі внизу:

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

І встановіть ярлик клавіатури, наприклад Ctrl+ Shift+ R:

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


9

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

Chromium не повинен бути нахабним, щоб приймати рішення та застосовувати налаштування щодо користувачів.

Ви можете відключити кеш в UNIX за допомогою --disk-cache-dir = / dev / null.

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


8

Це може комусь допомогти.

Я сфальсифікував свій Nginx для шаленого кешування. Таким чином, відключення кешу в мережевих інструментах та явне очищення кеша не працюють.

Дуже просте, але нудне рішення, я просто відкриваю нову вкладку інкогніто. Дивно, але це працює весь час!

Швидке оновлення в режимі анонімного перегляду робить трюк у будь-який час, коли я хочу перезавантажитись у тому ж режимі.


6

Як щодо закладки, яка змінює ім’я сторінки, щоб запобігти кешування сторінки. У Chrome ви б створили нову закладку, а потім вставили код у URL-адресу. Клацніть на закладку, і сторінка перезавантажиться часовою позначкою, щоб перешкодити кеш.

javascript:(function(){var idx = location.href.indexOf('?');var d = new Date();var str = location.href.substr(0,idx) + '?version=' + d.getTime();location.href=str; void 0;})();

5

Мене просто зловили, але це не обов'язково через Chrome.

Я використовую jQuery для того, щоб робити запити AJAX. У запиті атрибут кеша встановлено істинно:

   $.ajax({
        type: 'GET',
        cache: true,
        ....

Встановивши це значення false вирішило мою проблему, але це не ідеально.

Я поняття не маю, де ці дані зберігаються, але я знаю, що хром ніколи не потрапляв на сервер за запитом.


5

Зараз є кращий і швидший спосіб (версія Chrome 59.xx):

Клацніть правою кнопкою миші на значку перезавантаження (зліва від поля URL-адреси), і ви отримаєте спадне меню, виберіть третій варіант: 'порожній кеш і жорстке перезавантаження'.

Ця опція доступна лише тоді, коли відкриті інструменти для розробників. (Зауважте різницю у варіанті 2: 'Hard reload' -cmd-shift-R). Тут немає порожнього кешу!


3

У веб-магазині хрому під назвою Clear Cache є розширення з хромом .

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

Дуже-дуже хороший!

Ви також можете визначити комбінацію клавіш для цього в параметрах!

Також інший спосіб - запустити ваше хромоване вікно в режимі анонімного перегляду. Тут кеш також повинен бути повністю відключений.


Не вдається знайти параметр для визначення того, для якого домену це робиться. Це не дуже добре. Як щодо chrome.google.com/webstore/detail/cache-killer/… ..?
nkkollaw

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

2

Ще один варіант відключення кешу надається моїм розширенням для Chrome інспектор розмірів сторінки з який відключає кеш точно так само, як це робить Devtools.

Крім того, розширення швидко звітує про розмір сторінки, використання кешу, мережеві запити та час завантаження веб-сторінки зручним способом. Плюс його відкритий джерело в Github .

Скріншот - Інспектор розміру сторінки


2

Не впевнений, що ви використовуєте, але якщо ви використовуєте ASP.Net, ви можете зробити наступне, що працює як шарм:

<link href="@Url.Content("~/Content/Site.css")?time=@DateTime.Now" rel="stylesheet" />

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


абсолютно. Я використовував це та умовну компіляцію, тому вона не відображається в тестових і версійних збірках.
Cee McSharpface

Ще кращим способом є використання часу модифікації файлів css як змінного значення. Цей розчин може бути використаний і у виробничих умовах. Це просто працює :) Не впевнений, як це робиться в ASP, але в PHP приблизно так <link href = "style.css? Time = <? Php echo fileminfo ('style.css');?>" Rel = "styleheet" >
Олівер Маннер

2

У мене була така ж проблема, я намагався:

  • Зсув управління R,
  • Вимкнути кеш у F12
  • Управління F5.

Тоді я виявив, що використання маніфесту .appcache для сайту, який не є https, застаріле . Я видалив файл site.appcache та його посилання в тезі html, і тепер я бачу останню версію кожної сторінки!


2

Якщо ви використовуєте ServiceWorkers (наприклад, для прогресивних веб-додатків), вам, ймовірно, потрібно буде встановити прапорець "Оновити при перезавантаженні" в додатку> Службові працівники також у інструментах для розробників.

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


1

Оскільки версія 50 (якщо я правильно пам’ятаю), параметр «Вимкнути кеш» був видалений із налаштувань Devtool. Перейдіть на вкладку «Мережа» і там є опція «Вимкнути кеш».


0

Привіт, якщо ваш сайт використовує PHP, тоді розмістіть наступний маленький фрагмент PHP на початку вашої html-сторінки:

   //dev versioning - stop caching
   $rand = rand(1, 99999999);

Тепер скрізь, коли ви завантажуєте такі ресурси, як CSS- або JS- файли, у скрипт чи елемент посилання, ви додаєте створене випадкове значення до URL-адреси запиту після додавання "?" до URI через PHP:

    echo $rand;

Це воно! Більше не буде браузера, який кешуватиме ваш сайт - незалежно від того, який саме вид.

Звичайно, видаліть свій код перед публікацією або просто встановіть $ rand на порожній рядок, щоб знову дозволити кешування.


0

Я використовував інші варіанти, описані вище, але вважаю, що найкраще додати наступний параметр до запуску chrome.exe.

"C: \ Program Files (x86) \ Google \ Chrome \ Application \ chrome.exe" --disk-cache-size = 1 -media-cache = 1

Я вважаю, що не вимикати медіа-кеш - це гарна ідея, але вона тут заради повноти.

Насправді я хочу повністю відключити кеш, використовувати пам'ять для IO замість свого диска (що також зробить час завантаження на 10 разів швидше!), Але я не думаю, що хром чи будь-який браузер для цього питання ще не мають цього варіанту .


0

Як я можу тимчасово відключити кеш або оновити сторінку якимось чином, щоб я міг бачити зміни?

Незрозуміло, на який "кеш" ви посилаєтесь. Існує кілька різних методів, за допомогою яких браузер може постійно кешувати вміст. Веб-сховище є одним із них, Cache-Controlбудучи іншим.

Деякі веб-переглядачі також мають Cache, використовуваний спільно з Сервісними працівниками , для створення прогресивних веб-додатків (PWA), що забезпечують підтримку в режимі офлайн.

Щоб очистити кеш-пам'ять для PWA

self.caches.keys().then(keys => { keys.forEach(key => console.log(key)) })

щоб перелічити назви клавіш кешу, запустіть:

self.caches.delete('my-site-cache')

видалити кеш-ключ за назвою (тобто my-site-cache). Потім оновіть сторінку.

Якщо після оновлення на консолі ви побачите будь-які помилки, пов’язані з працівниками, вам також може знадобитися скасувати реєстрацію зареєстрованих працівників:

navigator.serviceWorker.getRegistrations()
  .then(registrations => {
    registrations.forEach(registration => {
      registration.unregister()
    }) 
  })

0

Убивця кешу Chrome є на сьогодні найкращим варіантом. Оскільки URL магазину для встановлення вбивці кеша знищено, ви можете завантажити файл CRX тут:

https://www.crx4chrome.com/extensions/jpfbieopdmepaolggioebjmedmclkbap/

як тільки файл завантаження буде завантажено, відкрийте Chrome -> інші інструменти -> розширення, а потім перетягніть файл CRX з Провідника файлів або на робочий стіл (залежно від місця, де ви завантажили файл) у хромоване вікно, щоб встановити розширення.


0

Я використовую (у windows), ctrl + shift + delete, і коли з’явиться діалогове вікно chrome, натисніть клавішу Enter. Це можна налаштувати з тим, що потрібно очистити щоразу при виконанні цієї послідовності. Не потрібно мати дев. інструменти, відкриті в цьому випадку.


0

Я опинився в ситуації, коли браузер завантажує дані кешу з диска, навіть перевіряючи його відключений кеш (я використовував Chrome). Усі мої CSS та JS завантажувались із сервера, але не з веб-сторінки. Це відбувалося як у моїх місцевих, так і у виробничих.

Щоб виправити це, мені потрібно покласти додатковий параметр у свою URL-адресу, щоб змусити браузер отримати веб-сторінку з сервера, навіть контролер не потребував цього.

Я використовував ASP.Net, тому ось мій приклад:

//Controller function
public ActionResult Index()
    {
        return View();
    }
//Link
@Html.Action("Index", "Home", new { ts = DateTime.Now.Ticks.ToString()})

Результат - він створить посилання на зразок: http://www.myweb.com/Home/Index?ts=636558555408282209

Це моя ситуація та рішення. Сподіваємось, це може комусь допомогти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.