Как сделать так, чтобы Chrome прекратил кэширование перенаправлений?


416

Я работаю над веб-приложением, которое использует redirects(для красивых URL).

Я пытаюсь отладить логику, как работают перенаправления. Тем не менее, Google Chrome продолжает запоминать перенаправления и даже после того, как я изменяю код, перенаправляем так же.

Это очень затрудняет поиск и устранение неисправностей.

Например, если я перенаправляю /thisна /that, то измените мой код, чтобы НЕ перенаправлять /thisбольше. Google Chrome все еще перенаправляет на /that. Как редирект кэшируется или что-то. Есть ли способ отключить это?


Это все еще происходит при перезагрузке? Он должен прекратиться после перезапуска с новым сеансом
случайно

1
@ Случайный перезапуск Chrome, кажется, исправляет это. Тем не менее, у меня обычно много открытых окон (например, документы, соединения с БД, учебные пособия, страница, над которой я работаю, и т. Д.). Если я что-то устраняю, может потребоваться несколько попыток, прежде чем выяснить, что происходит. Я бы не посчитал идеальным постоянно закрывать все окна. Благодарю.
Джей Ди Айзекс

2
Обходной путь: используйте 302 (временные) перенаправления во время тестирования и переключитесь на 301 (постоянный), когда вы закончите. (Предостережение: некоторые браузеры (Firefox) кэшируют даже 302 перенаправления при переходе с версий http на https одной и той же страницы.)
TRiG

1
Ввод новых www.mywebsite/?someparam=somevalueработ для меня
Мустафа,

1
@JDIsaacks вы можете использовать Chrome исключительно для отладки (например, Chrome Canary)
athosbr99

Ответы:


329

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

Меню Chrome Chrome Menu> Настройки> Показать дополнительные настройки ...> Конфиденциальность> Нажмите Очистить данные просмотра ...

Что бы вы ни выбрали, убедитесь, что опция «Кэшированные изображения и файлы» включена.

Затем нажмите Очистить данные просмотра, и вы сможете повторить тестирование снова.

Если вы только что выполнили перенаправление, вам нужно только удалить данные за прошедший час.

Кроме того, тестируйте и развивайте в режиме инкогнито. Там кеш сбрасывается после закрытия браузера.


3
В последней версии Chrome этот параметр будет «Кэшированные изображения и файлы» вместо «Очистить кэш»
Dan R

23
Я продолжаю перенаправляться, даже в режиме инкогнито.
Гайя

2
@ Gaia да, похоже, проблема в Chrome incognito. Если вы только тестируете, вы можете использовать Firefox для этого.
Приватный

10
Обратите внимание, что HTTP 301 постоянно перемещается, поэтому кэширование ответа вполне допустимо. Если вы не хотите, чтобы ответ кэшировался, попробуйте 302 или 307. en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection
CVn

7
Сочетание клавиш для этого Ctrl+ Shift+ Delete.
0xcaff

151

Это верный способ очистки липкой памяти Chrome для перенаправлений без очистки всех данных просмотра (метод, используемый в текущем верхнем ответе):

  1. Откройте панель « Инструменты разработчика» ( optioncommandiна Mac или ctrlshiftiWindows)

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

  3. Меню откроется

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

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

Вот отличное объяснение того, как эти 3 варианта отличаются .

PS: Чтобы избежать необходимости выполнять эти шаги каждый раз, когда за перенаправлением следует Chrome: установите флажок отключить кеш в DevTools, и, пока DevTools открыт, Chrome будет обходить кеш перенаправления (согласно этому ответу )


1
Как в стороне: это не доступно на Mac.
Арджан

5
это не всегда удаляет кэшированные перенаправления
Claudiu Creanga

7
Он доступен на Mac, но меню доступно, только если у вас открыты инструменты разработки. Я предполагаю, что это может быть то же самое на Windows.
Перси

1
@ Arjan это доступно на Mac, см. Superuser.com/questions/304589/…
Gaia

4
Mac OS X, Йосемити. Борьба с постоянным перенаправлением с http на https, работала только эта опция. Все остальные, включая «Отключить кеш (пока открыт DevTools)», не имели значения.
Карлес Сала

115

Это не идеальное решение, но я смог запретить Chrome использовать кэшированное перенаправление, передав фиктивную строку запроса или добавив фиктивный параметр в существующую строку запроса. Например, добавление простого ?в конец URL-адреса, у которого не было строки q-запроса, работало для меня в Chrome 30 в Max OS X.


10
Да, это работает. example.comстановится example.com?. Я самая простая из всех
fregante

2
Это потрясающий трюк. Я предполагаю, что вы можете использовать это бесконечно ?abc, и ?abc2т.д ...
Brentonstrine

2
Это не сработало для меня. Даже используя другой порт (: 8080), он изменился на https, что похоже на ошибку Chrome.
jwadsack

Я уже делаю то же самое, но это не всегда работает, иногда мне нужно нажать Ctrl + Shift + R (Ctrl + F5), чтобы получить более новую версию веб-страницы или частичные страницы, включенные в страницу
M98

Если есть кэшированный 301 с подстановочными знаками, это может не сработать, так как он «запоминает» пересылку всего после TLD.
дхаупин

92

Об этом есть ошибка "wontfix" в Chromium ,

Это ожидаемое поведение.

Обратите внимание, что:

  1. Вы можете добавить заголовки контроля кеша в 301, и мы последуем за ними (срок действия и т. Д.)
  2. Если рассматриваемый ресурс является подресурсом, перезагрузка страницы приведет к повторной проверке перенаправления на сервере.
  3. Вам не нужно терять весь кэш. Просто следуйте за редиректом и удалите последний час.

Что значит «удалить последний час». означает? Как это сделать?
Микаэль Майер

1
@ MikaëlMayer Когда вы нажимаете «История> Очистить данные о просмотре», вы можете выбрать период для удаления данных («прошедший час», «прошедшая неделя» и т. Д.)
dbr

Нет! .. Очистка данных о просмотре сайта не приведет к удалению перенаправления 301. Во всяком случае, не в Chromium 64.0.x
patricktokeeffe

Очистка "1 час" позволяет вам выйти из всех продуктов и аккаунтов Google. Какой хороший совет ...
Лучано Фантуцци

> Вам не нужно терять весь кеш. Просто следуйте за редиректом и удалите последний час. Это все еще хуже, чем «удалить последний редирект», что является функцией, которую они не исправили.
rox0r

66

Если в DevTools включена опция «Отключить кэш (когда DevTools открыт)», то достаточно просто открыть DevTools, чтобы обойти кэш перенаправления, не теряя при этом сеанс.


9
примечание: если devTools открыт, существует быстрый способ удаления кэша: нажмите кнопку обновления правой кнопкой мыши и выберите полную перезагрузку;)
user65130

5
это не работает все время. Я удалил весь свой кеш и все еще перенаправлял. Только в режиме инкогнито это работает, и вы получаете постоянное поведение
Claudiu Creanga

2
Почему это не лучшее решение? остальные ужасны по сравнению!
Брайан

4
Больше не работает ... Вероятно, работал в 2014 году
лорд Лох.

@LordLoh. Я только что попробовал это на последней версии Chrome, и он работал точно так, как ожидалось. Когда devtools закрыты, редирект кэшируется. Перезагрузка страницы с открытыми инструментами не перенаправляет.
Майк Госсманн

20

Chrome кэширует перенаправления HTTP и прекращает проверку сайта, если перенаправление изменилось. Это может быть неприятно, так как самый простой способ исправить (посещение сайта и принудительное обновление) не может быть использован, потому что перенаправление произойдет до того, как вы перейдете по ссылке. Это не решит проблему .

Чтобы обойти это, вы можете очистить свои данные просмотра, как описано здесь, или вы можете выполнить следующие шаги и избежать потери своей истории.

  1. Откройте Инструменты разработчика Chrome DEV-инструменты

  2. Нажмите в настройках настройки

  3. Установите флажок Отключить кэш (пока открыт DevTools) запрещать

  4. Посетите сайт, который вы хотели, и проблема с кешем будет решена.


2
На вкладке сети вы также найдете опцию «отключить кеш», это та же опция. Для отладки перенаправлений я бы также предложил использовать «сохранить журнал».
Trendfischer

15

Перейдите в chrome: // net-internals и в крайнем правом углу откройте раскрывающийся список и выберите «Очистить кэш». Начиная с версии 48, это было единственное, что помогло мне очистить кэшированный 301 (постоянное перенаправление).

Обновление: К сожалению, с версии 71 (декабрь 2018 г.) Google удалила функцию net-internals.


1
Работает над Chrome 56
spencer.sm

Все еще работает над Chrome 67
SCO

Не работает в Chrome 71. Средство просмотра событий net-internals и связанные с ним функции были удалены.
userlond

8

Домены .dev вынуждены использовать HTTPS в Chrome 63+

Начиная с Chrome 63, начиная с декабря 2017 года, все домены, заканчивающиеся на .dev (и .foo), вынуждены использовать HTTPS через предварительно загруженный заголовок HTTP Strict Transport Security (HSTS).

Подробнее об этом здесь: https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/


Это был мой виновник наверняка! Я провожу ЧАСЫ, пытаясь понять, что, черт возьми, происходит. Спасибо за публикацию этого!
Джабари

Этот ответ требует больше голосов. Возможно, проблема не в том, что у спрашивающего есть, но многие разработчики найдут этот ответ в своих результатах поиска.
пн.

Бог! Кто бы мог придумать такую ​​блестящую идею!
Павел Недоба

7

Чтобы очистить кэш перенаправления для одной страницы в Chrome, просмотрите источник и выполните полное обновление (CTRL + SHIFT + R).

Это работает, так как исходный браузер автоматически не выполняет перенаправления 301.


4
Не работал для меня в Chrome 25
swrobel

3
Это не работает, если перенаправление для всех страниц. У меня есть www. -> нет www. перенаправление - так перенаправление на первый удар, поэтому я не могу ничего обновить. Каждый раз, когда я пытаюсь перейти на страницу для обновления, она следует 301 - тогда уже слишком поздно!
Ян Грейнджер

1
@Ian Что делать, если вы введете в адресной строке источник просмотра: www.example.com? Это позволяет вам обновить без перенаправления?
Мэтью Блэкфорд

1
@MatthewBlackford УДАЛЯ то же самое, я на самом деле получаю источник перенаправленной страницы. Не уверен, что мой тест был настолько хорош, хотя TBH. Я удалил историю просмотров, чтобы исправить эту проблему.
Ян Грейнджер

2
Это работает только для перенаправлений javascript и metatag. HTTP перенаправления все еще следуют
fregante

6

Как описано здесь, может быть вызвано HSTS

Чтобы обойти это, я сделал следующее.

В адресной строке Chrome введите «chrome: // net-internals / # hsts». В самом низу страницы находится текстовое поле домена QUERY - убедитесь, что ваш сайт (например, localhost) известен браузеру. Если это так, УДАЛИТЕ localhost домен с использованием текстового поля выше Ваш сайт теперь должен работать с использованием старого доброго HTTP


1
Эй спасибо Это действительно помогает с внезапным кешем переадресации https.
Рубероид

5

В Chrome или Firefox вы можете обновить перенаправление, набрав «view-source: redirect.yoursite.com» и нажав Enter. Затем обновите эту страницу. Теперь это должно заставить Chrome или Firefox обновить перенаправление.


Это единственный ответ, который работал для меня.
JaredThirsk

4

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


3

Для разработки рекомендую в Chrome открыть настройки DevTools и поставить галочку «Отключить кеш». Тогда 30-кратные перенаправления не кэшируются, и вы можете отлаживать файлы .htaccess и так далее! введите описание изображения здесь


Странно то, что этот вариант не помогает. Я отключил кеш, но он все еще говорит на вкладке сети 301 Moved Permanently (from disk cache).
mgutt

Это то же самое, что нажать «отключить кэш», когда открыта вкладка «Сеть». Нет - не очищает перенаправления.
bshea

1
  1. Перейти к chrome://settings/search#clear%20browsing%20data

  2. Нажмите «Очистить данные просмотра»

  3. Отметьте «Кэшированные изображения и файлы» (и снимите отметку с остальных, если хотите)

  4. Нажмите «Очистить данные просмотра»

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


1

Самый простой метод, жесткий освежить. удерживайте Ctrl+ Rнесколько секунд. Это очищает перенаправления, а также статические ресурсы.


Почему вы держите его вместо простого нажатия Ctrl+R?
Гроностай

@gronostaj Разве мой ответ не был простым и понятным? , Без удержания это было бы просто нормальным обновлением. Который не очищает кэшированные ресурсы или перенаправляет.
Ryu_hayabusa

Удерживать - это все равно, что нажимать его несколько раз Откройте Блокнот и удерживайте R, появится несколько R. Это точно так же, но с Ctrl. Удерживание Ctrl+ Rявляется точным эквивалентом нажатия на него десятки раз в секунду в течение нескольких секунд. Это не умно, оно использует встроенный механизм обновления и полагается на недокументированное поведение.
Гроностай

@gronostaj Да, это недокументированное поведение. Принятый ответ не работает для меня. Вот почему я поделился этим здесь. Я не вижу другого способа очистки кэшированного перенаправления. Если вы знаете какие-либо другие методы, не стесняйтесь поделиться.
Ryu_hayabusa

Пробовал и не получилось (301 редирект на весь домен).
mgutt

1

Если вы не хотите терять весь кеш, а ваше перенаправление все еще застряло в кеше, вы можете попробовать посетить URL-адрес view-source: version. Это обновило кеш перенаправления того же URL для меня.


0

Я попробовал все ответы на этой странице, но ни один не работал, пока я не запустил flushdns в окне командной строки Windows.

C:\Users\DBashyal>ipconfig /flushdns

Windows IP Configuration    
Successfully flushed the DNS Resolver Cache.

К вашему сведению, я уже Disable cacheпроверил, как упоминалось в этом ответе.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.