Как сделать так, чтобы 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.