Jak sprawić, by Chrome przestał buforować przekierowania?

415

Pracuję nad aplikacją internetową, która używa redirects(dla ładnych adresów URL).

Próbuję debugować logikę w sposób, w jaki działają przekierowania. Jednak Google Chrome pamięta przekierowania i nawet po zmianie kodu przekierowuję w ten sam sposób.

To bardzo utrudnia rozwiązywanie problemów.

Na przykład, jeśli przekieruję /thisdo /that, zmień mój kod na NIE przekierowujący /thisjuż. Google Chrome nadal przekierowuje na /that. Jak przekierowanie jest buforowane czy coś. Czy istnieje sposób, aby to wyłączyć?

JD Isaacks
źródło
Czy nadal tak się dzieje po ponownym uruchomieniu? Powinno się zatrzymać po ponownym uruchomieniu z nową sesją
losowo
1
@ losowe, wydaje się, że ponowne uruchomienie Chrome naprawia to. Jednak zazwyczaj mam wiele otwartych okien (np. Dokumenty, połączenia db, samouczki, strona, nad którą pracuję itp.) Jeśli coś rozwiązuję, może to potrwać kilka prób, zanim zorientuję się, co się dzieje. Naprawdę nie uważałbym za idealne, aby ciągle zamykać wszystkie okna. Dzięki.
JD Isaacks
2
Obejście: Użyj przekierowań 302 (tymczasowych) podczas testowania, a po zakończeniu przełącz na 301 (stałe). (Zastrzeżenie: niektóre przeglądarki (Firefox) buforują nawet 302 przekierowań, gdy przechodzą z wersji HTTP na https tej samej strony.)
TRiG
1
Wprowadzanie www.mywebsite/?someparam=somevaluedla mnie nowych prac
Mustafa
1
@JDIsaacks możesz użyć Chrome wyłącznie do debugowania (np. Chrome Canary)
athosbr99

Odpowiedzi:

328

Google Chrome zbuforuje Twoje 301 przekierowań . Aby obejść ten problem i pozostawić otwarte karty, wystarczy wyczyścić pamięć podręczną przeglądarki.

Menu Chrome Menu Chrome> Ustawienia> Pokaż ustawienia zaawansowane ...> Prywatność> Kliknij Wyczyść dane przeglądania ...

Cokolwiek wybierzesz, upewnij się, że „Buforowane obrazy i pliki” jest zaznaczoną opcją.

Następnie kliknij Wyczyść dane przeglądania i powinieneś być w stanie ponownie przetestować.

Jeśli właśnie wykonałeś przekierowanie, musisz tylko usunąć dane z ostatniej godziny.

Alternatywnie, testuj i rozwijaj w trybie incognito. Tam pamięć podręczna jest opróżniana po zamknięciu przeglądarki.

losowy
źródło
3
Najnowsza wersja Chrome, ta opcja brzmiałaby „Zapisane w pamięci podręcznej obrazy i pliki” zamiast „Opróżnij pamięć podręczną”
Dan R
23
Ciągle jestem przekierowywany, nawet w trybie incognito.
Gaia,
2
@ Gaia tak, to wydaje się być problemem w Chrome incognito. Jeśli tylko testujesz, możesz użyć do tego Firefoxa. Prywatne przeglądanie przeglądarki Firefox działa dobrze :)
chhantyal
10
Pamiętaj, że HTTP 301 jest przenoszony na stałe, więc buforowanie odpowiedzi jest idealnie dozwolone. Jeśli nie chcesz buforować odpowiedzi, wypróbuj 302 lub 307. en.wikipedia.org/wiki/List_of_HTTP_status_codes#3xx_Redirection
CVn
7
Skrót klawiaturowy to Ctrl+ Shift+ Delete.
0xcaff,
151

To niezawodny sposób na wyczyszczenie lepkiej pamięci Chrome na przekierowania bez usuwania wszystkich danych przeglądania (metoda stosowana w bieżącej górnej odpowiedzi):

  1. Otwórz panel Narzędzi dla programistów ( optioncommandina komputerze Mac lub ctrlshiftiWindows)

  2. Kliknij i przytrzymaj ikonę przeładowania wprowadź opis zdjęcia tutaj

  3. Otworzy się menu

    wprowadź opis zdjęcia tutaj

  4. Wybierz trzecią opcję z tego menu („Opróżnij pamięć podręczną i uruchom ponownie”)

Oto doskonałe wyjaśnienie różnic między tymi 3 opcjami .

PS: Aby uniknąć konieczności wykonywania tych kroków za każdym razem, gdy po przekierowaniu następuje Chrome: zaznacz opcję wyłącz pamięć podręczną w DevTools, a gdy DevTools jest otwarte, Chrome obejdzie pamięć podręczną przekierowań (zgodnie z tą odpowiedzią )

Gaia
źródło
1
Nawiasem mówiąc: nie jest to dostępne na komputerze Mac.
Arjan
5
nie zawsze usuwa to przekierowania z pamięci podręcznej
Claudiu Creanga,
7
Jest dostępny na Macu, ale menu jest dostępne tylko wtedy, gdy masz otwarte narzędzia programistyczne. Zakładam, że może być tak samo w systemie Windows.
Percy
1
@Arjan jest dostępny na komputerze Mac patrz superuser.com/questions/304589/…
Gaia,
4
Mac OS X, Yosemite. W przypadku stałego przekierowania http do https tylko ta opcja działała. Wszystkie pozostałe, w tym „Wyłącz pamięć podręczną (gdy DevTools jest otwarty)”, nie miały znaczenia.
Carles Sala
115

Nie jest to idealne rozwiązanie, ale udało mi się uniemożliwić Chromeowi korzystanie z przekierowania w pamięci podręcznej, przekazując fałszywy ciąg zapytania lub dodając fałszywy parametr do istniejącego ciągu zapytania. Na przykład dodanie prostej ?na końcu adresu URL, który nie miał q ciągu zapytania, działało dla mnie w Chrome 30 na Max OS X.

sradack
źródło
10
Tak, to działa. example.comstaje się example.com?. To najłatwiejszy ze wszystkich
fregante
2
To niesamowita sztuczka. Przypuszczam, że można użyć tego w nieskończoność ?abc, ?abc2etc ...
brentonstrine
2
To mi nie zadziałało. Nawet przy użyciu innego portu (: 8080) zmienił się na https, co wydaje się być błędem Chrome.
jwadsack
Już robię to samo, ale to nie zawsze działa, czasami muszę nacisnąć Ctrl + Shift + R (Ctrl + F5), aby uzyskać nowszą wersję strony lub częściowe strony zawarte na stronie
M98
Jeśli jest buforowany symbol wieloznaczny 301, może to nie działać, ponieważ „zapamiętuje” przekazywanie wszystkiego po TLD.
dhaupin
92

Jest w tym błąd Chromium „wontfix” ,

Takie jest oczekiwane zachowanie.

Uwaga:

  1. Możesz dodać nagłówki kontroli pamięci podręcznej do 301, a my będziemy ich przestrzegać (wygaśnięcie itp.)
  2. Jeśli dany zasób jest podrzędnym zasobem, przeładowanie strony spowoduje ponowne sprawdzenie poprawności przekierowania na serwerze.
  3. Nie musisz tracić całej pamięci podręcznej. Wystarczy postępować zgodnie z przekierowaniem i usunąć ostatnią godzinę.
dbr
źródło
Co oznacza „usuwanie ostatniej godziny”. znaczy? Jak to zrobić?
Mikaël Mayer,
1
@ MikaëlMayer Po kliknięciu „Historia> Wyczyść dane przeglądania” możesz wybrać przedział czasowy, aby usunąć dane („minioną godzinę”, „miniony tydzień” itp.)
dbr
Nie..! Wyczyszczenie danych przeglądania witryny nie spowoduje usunięcia zachowania przekierowania 301. W każdym razie nie w Chromium 64.0.x
patricktokeeffe
Wyczyszczenie „1 godziny” powoduje wylogowanie ze wszystkich produktów i kont Google. Co za dobra rada ...
Luciano Fantuzzi,
> Nie musisz tracić całej pamięci podręcznej. Wystarczy postępować zgodnie z przekierowaniem i usunąć ostatnią godzinę. To wciąż gorsze niż „usuń ostatnie przekierowanie”, która jest funkcją, której nie naprawili.
rox0r
66

Jeśli masz włączoną opcję „Wyłącz pamięć podręczną (gdy DevTools jest otwarte)” w DevTools, to samo otwarcie DevTools wystarczy, aby ominąć bufor przekierowania, bez ciągłego wyrzucania sesji.

Mike Gossmann
źródło
9
Uwaga: jeśli devTools jest otwarty, istnieje szybki sposób na usunięcie pamięci podręcznej: kliknij prawym przyciskiem myszy przycisk Odśwież i wybierz pełne przeładowanie;)
użytkownik65130
5
to nie działa cały czas. Usunąłem całą pamięć podręczną i nadal przekierowuję. Działa tylko w trybie incognito i masz spójne zachowanie
Claudiu Creanga,
2
Dlaczego to nie jest najlepsze rozwiązanie? inni są okropni w porównaniu!
Brian
4
Już nie działa ... Prawdopodobnie pracował w 2014 r.
Lord Loh.
@LordLoh. Właśnie wypróbowałem to w najnowszej wersji Chrome i działało dokładnie tak, jak oczekiwano. Gdy devtools są zamknięte, przekierowanie jest buforowane. Ponowne załadowanie strony przy otwartych narzędziach nie powoduje przekierowania.
Mike Gossmann
20

Chrome buforuje przekierowania HTTP i przestaje sprawdzać w witrynie, czy przekierowanie uległo zmianie. Może to być frustrujące, ponieważ nie można użyć najprostszego sposobu naprawy (odwiedzanie witryny i wymuszanie twardego odświeżania), ponieważ przekierowanie nastąpi przed uzyskaniem dostępu do łącza. To nie da się naprawić .

Aby obejść ten problem, możesz wyczyścić dane przeglądania, jak wyjaśniono tutaj, lub możesz wykonać poniższe czynności i uniknąć utraty historii.

  1. Otwórz Chrome Developer Tools narzędzia programistyczne

  2. Kliknij w Ustawienia ustawienia

  3. Zaznacz Wyłącz pamięć podręczną (gdy DevTools jest otwarte) wyłączyć

  4. Odwiedź żądaną witrynę, a problem z pamięcią podręczną zostanie rozwiązany.

Zanon
źródło
2
Na karcie sieci znajdziesz także opcję „Wyłącz pamięć podręczną”, jest to ta sama opcja. W przypadku debugowania przekierowań sugerowałbym również użycie „dziennika zachowania”.
Trendfischer
15

Przejdź do chrome: // net-internals i po prawej stronie otwórz menu rozwijane i wybierz „Wyczyść pamięć podręczną”. Od wersji 48 była to jedyna rzecz, która działała dla mnie, aby wyczyścić pamięć podręczną 301 (trwałe przekierowanie).

Aktualizacja: Niestety, od wersji 71 (grudzień 2018 r.) Google usunął funkcję net-internals.

McGuireV10
źródło
1
Prace nad Chrome 56
spencer.sm
Nadal działa na Chrome 67
SCO
Nie działaj w przeglądarce Chrome 71. Przeglądarka zdarzeń wewnętrznych i powiązane funkcje zostały usunięte.
userlond,
8

Domeny .dev są zmuszone używać HTTPS w Chrome 63+

Od Chrome 63, do grudnia 2017 r., Wszystkie domeny kończące się na .dev (i .foo) są zmuszone do korzystania z HTTPS przez wstępnie załadowany nagłówek HTTP Strict Transport Security (HSTS).

Więcej na ten temat tutaj: https://ma.ttias.be/chrome-force-dev-domains-https-via-preloaded-hsts/

Lucas Bustamante
źródło
To z pewnością mój winowajca! Spędzam GODZIN, próbując dowiedzieć się, co się do cholery dzieje. Dziękujemy za opublikowanie tego!
Jabari
Ta odpowiedź wymaga więcej głosów. Pytający może nie być problemem, ale dla wielu deweloperów znajdzie tę odpowiedź w wynikach wyszukiwania.
bp.
Bóg! Kto kiedykolwiek wpadłby na tak genialny pomysł!
Pavel Niedoba
7

Aby wyczyścić pamięć podręczną przekierowań dla pojedynczej strony w Chrome, zobacz źródło i wykonaj twarde odświeżanie (CTRL + SHIFT + R).

Działa to, ponieważ przeglądarka źródłowa nie śledzi automatycznie przekierowań 301.

Matthew Blackford
źródło
4
Nie działało dla mnie w Chrome 25
swrobel
3
To nie działa, jeśli przekierowanie dotyczy wszystkich stron. Mam www. -> brak www. przekierowanie - więc przekierowanie następuje przy pierwszym trafieniu, więc nie mogę nic odświeżyć. Za każdym razem, gdy próbuję przejść do strony, aby ją odświeżyć, następuje 301 - wtedy jest już za późno!
Ian Grainger
1
@Ian Co, jeśli wpiszesz w pasku adresu źródło widoku: www.example.com? Czy to pozwala Ci odświeżyć się bez przekierowywania?
Matthew Blackford
1
@MatthewBlackford AFAICT to samo, faktycznie otrzymuję źródło przekierowanej strony. Nie jestem pewien, czy mój test był tak świetny, choć TBH. Usunąłem historię przeglądania, aby „naprawić” ten problem.
Ian Grainger
2
Działa to tylko w przypadku przekierowań javascript i metatag. Przekierowania HTTP są nadal śledzone
fregante
6

Jak opisano tutaj może być spowodowane przez HSTS

Aby obejść ten problem, wykonałem następujące czynności.

W pasku adresu Chrome wpisz „chrome: // net-internals / # hsts”. Na samym dole strony znajduje się pole tekstowe domeny QUERY - sprawdź, czy Twoja witryna (np. Localhost) jest znana przeglądarce. Jeśli tak, usuń localhost domena przy użyciu powyższego pola tekstowego Twoja witryna powinna teraz działać przy użyciu zwykłego starego protokołu HTTP

Tonino
źródło
1
Hej dzięki. To naprawdę pomaga przy nagłej pamięci podręcznej przekierowań https.
Ruberoid
5

W przeglądarce Chrome lub Firefox możesz odświeżyć przekierowanie, wpisując „view-source: redirect.yoursite.com” i naciskając Enter. Następnie odśwież tę stronę. Teraz powinno to zmusić Chrome lub Firefox do odświeżenia przekierowania.

mrbofus
źródło
To jedyna odpowiedź, która zadziałała dla mnie.
JaredThirsk
4

Jeśli chcesz tylko sprawdzić, czy przekierowania działają zgodnie z oczekiwaniami, prawdopodobnie łatwiej jest użyć narzędzia wiersza polecenia, takiego jak wget lub podobne. Możesz sprawdzić nagłówki odpowiedzi i przekierowania nie są buforowane.

Tom Wilson
źródło
3

Dla celów programistycznych polecam w Chrome otworzyć ustawienia DevTools i zaznaczyć „Wyłącz pamięć podręczną”. Następnie 30x przekierowania nie są buforowane i można debugować pliki .htaccess i tak dalej! wprowadź opis zdjęcia tutaj

lukyer
źródło
Dziwne jest to, że ta opcja nie pomaga. Wyłączyłem pamięć podręczną, ale nadal wyświetla się na karcie sieci 301 Moved Permanently (from disk cache).
mgutt
To jest dokładnie to samo, co kliknięcie „wyłącz pamięć podręczną”, gdy karta sieciowa jest otwarta. Nie - nie usuwa przekierowań.
bshea
1
  1. Iść do chrome://settings/search#clear%20browsing%20data

  2. Kliknij „Wyczyść dane przeglądania”

  3. Zaznacz „Buforowane obrazy i pliki” (i odznacz resztę, jeśli chcesz)

  4. Kliknij „Wyczyść dane przeglądania”

wprowadź opis zdjęcia tutaj

guaka
źródło
1

najprostsza metoda, intensywne odświeżanie. przytrzymaj Ctrl+ Rkilka sekund. Spowoduje to usunięcie przekierowań oraz zasobów statycznych.

Ryu_hayabusa
źródło
Dlaczego trzymasz go zamiast po prostu naciskać Ctrl+R?
gronostaj
@gronostaj Czy moja odpowiedź nie była prosta? . Bez trzymania to byłoby zwykłe odświeżenie. Co nie usuwa buforowanych zasobów ani przekierowań.
Ryu_hayabusa,
Trzymanie jest jak wielokrotne naciskanie. Otwórz Notatnik i przytrzymaj R, pojawi się wiele R. To jest dokładnie to samo, ale z Ctrl. Przytrzymanie Ctrl+ Rodpowiada dokładnemu naciśnięciu go kilkadziesiąt razy na sekundę przez kilka sekund. To nie jest mądre, nadużywa wbudowanego mechanizmu odświeżania i polega na nieudokumentowanym zachowaniu.
gronostaj
@gronostaj Tak, to zachowanie nieudokumentowane. Przyjęta odpowiedź nie działa dla mnie. Właśnie dlatego udostępniłem to tutaj. Nie widzę innego sposobu na wyczyszczenie przekierowania z pamięci podręcznej. Jeśli znasz inne metody, możesz je udostępnić.
Ryu_hayabusa,
Próbowałem i nie działało (przekierowanie 301 w całej domenie).
mgutt
1

Jeśli nie chcesz stracić całej pamięci podręcznej, a przekierowanie nadal utknęło w pamięci podręcznej, możesz spróbować odwiedzić stronę URL view-source: wersja. To odświeżyło dla mnie pamięć podręczną przekierowania tego samego adresu URL.

Ogier Schelvis
źródło
0

Próbowałem wszystkich odpowiedzi na tej stronie, ale żadna nie zadziałała, dopóki nie uruchomiłem flushdns w oknie wiersza poleceń systemu Windows.

C:\Users\DBashyal>ipconfig /flushdns

Windows IP Configuration    
Successfully flushed the DNS Resolver Cache.

Do Twojej wiadomości Disable cachesprawdziłem już, jak wspomniano w tej odpowiedzi.

Damodar Bashyal
źródło