Co najmniej dwie przeglądarki - Chrome i Firefox - będą buforować przekierowanie 301 bez daty wygaśnięcia .
Oznacza to, że pozostanie w pamięci podręcznej tak długo, jak długo pamięć podręczna przeglądarki będzie w stanie to pomieścić. Zostanie on usunięty z pamięci podręcznej, jeśli ręcznie wyczyścisz pamięć podręczną lub jeśli wpisy w pamięci podręcznej zostaną wyczyszczone, aby zrobić miejsce dla nowych.
Możesz to zweryfikować przynajmniej w przeglądarce Firefox, przechodząc do about:cache
i znajdując go w pamięci podręcznej dysku.
Nie wiem o zachowaniu innych przeglądarek, takich jak IE10 / IE11. Jednak biorąc pod uwagę, że inne przeglądarki przechowują go w pamięci podręcznej w nieskończoność, i tak będziesz musiał to uwzględnić.
We wszystkich przeglądarkach, w tym Chrome / Firefox, nadal można zastąpić to domyślne zachowanie za pomocą nagłówków, jak opisano poniżej:
Uwaga: ta odpowiedź została napisana w 2014 roku, a zachowanie przeglądarki może z czasem ulec zmianie.
Jeśli nie chcesz, aby przekierowanie było buforowane
To nieokreślone buforowanie jest domyślnym buforowaniem tylko tych przeglądarek przy braku nagłówków Cache-Control. Logika polega na tym, że określasz „trwałe” przekierowanie i nie podajesz im żadnych instrukcji buforowania, więc będą traktować to tak, jakbyś chciał buforować w nieskończoność.
Przeglądarki nadal honorują nagłówki Cache-Control i wygasają nagłówki, jak w przypadku każdej innej odpowiedzi, jeśli są one określone.
Możesz dodać nagłówki takie jak Cache-Control: max-age=3600
lub Expires: Thu, 01 Dec 2014 16:00:00 GMT
do swoich przekierowań 301. Możesz nawet dodać, Cache-Control: no-cache
aby nie była trwale buforowana przez przeglądarkę lub Cache-Control: no-store
aby nie mogła być nawet przechowywana w pamięci tymczasowej przez przeglądarkę.
Jednak moim zdaniem lepszą alternatywą jest użycie przekierowania 302 lub 307. Nie sugerują one przeglądarkom ani pamięci podręcznej, że są „stałymi” przekierowaniami, a zatem nie powinny być buforowane przy braku nagłówków Cache-Control.
Wydaje mi się, że wydaje się przekierowanie 301, ale oznaczenie go jako niemożliwego do buforowania jest sprzeczne z duchem tego, do czego służy przekierowanie 301, chociaż może być technicznie poprawne. YMMV i możesz znaleźć przypadki skrajne, w których sensowne jest, aby „trwałe” przekierowanie miało limit czasu.
Jeśli wcześniej wydałeś przekierowanie 301, ale nie chcesz tego robić
Jeśli ludzie nadal mają buforowane przekierowanie 301 w przeglądarce, nadal będą przekierowywani na stronę docelową, niezależnie od tego, czy strona źródłowa nadal ma przekierowanie na swoim miejscu. Dostępne opcje naprawy:
Najprostszym i najlepszym rozwiązaniem jest ponowne wydanie kolejnego przekierowania 301.
Przeglądarka zda sobie sprawę, że jest przekierowywana z powrotem do tego, co wcześniej uważała za wycofany z użytku adres URL, i powinno to spowodować ponowne pobranie tego adresu URL ponownie, aby potwierdzić, że stare przekierowanie nadal nie istnieje.
Edycja: niektóre komentarze podają w to wątpliwości, patrz poniżej.
Jeśli nie masz kontroli nad witryną, do której trafił poprzedni cel przekierowania, masz pecha. Spróbuj błagać właściciela witryny o przekierowanie z powrotem do Ciebie.
Lepiej też zapobiegać niż leczyć - unikaj przekierowania 301, jeśli nie jesteś pewien, czy chcesz na stałe wycofać stary adres URL.