Jaka jest różnica między Redirect()
i RedirectPermanent()
. Przeczytałem kilka artykułów, ale nie rozumiem, kiedy musimy używać Redirect()
i RedirectPermanent()
. Czy możesz pokazać przykład.
Odpowiedzi:
Podstawowa różnica między nimi polega na tym, że RedirectPermanent
wysyła do przeglądarki HTTP 301
kod stanu (Przeniesiony na stałe), podczas gdy Redirect
wyśle HTTP 302
kod stanu.
Użyj, RedirectPermanent
jeśli zasób został przeniesiony na stałe i nie będzie już dostępny w swojej poprzedniej lokalizacji. Większość przeglądarek zapisze tę odpowiedź w pamięci podręcznej i wykona przekierowanie automatycznie bez ponownego żądania oryginalnego zasobu.
Użyj, Redirect
jeśli zasób może być dostępny w tej samej lokalizacji (adresie URL) w przyszłości.
Przykład
Powiedzmy, że masz użytkowników w swoim systemie. Masz również możliwość usunięcia istniejących użytkowników. Twoja witryna posiada zasób, /user/{userid}
który wyświetla szczegóły danego użytkownika. Jeśli użytkownik został usunięty, musisz przekierować do /user/does-not-exist
strony. W tym przypadku:
Jeśli użytkownik już nigdy nie zostanie przywrócony, należy użyć, RedirectPermanent
aby przeglądarka mogła przejść bezpośrednio do /user/does-not-exist
kolejnych żądań, nawet jeśli adres URL wskazuje na /user/{userid}
.
Jeśli użytkownik może zostać przywrócony w przyszłości, należy użyć zwykłego Redirect
.
RedirectPermanent
może to być denerwujące podczas debugowania, ponieważ po drugim kliknięciu akcja kontrolera zostanie pominięta, a oryginalna funkcja nie osiągnie punktu przerwania, jeśli przekierowuje w inne miejsce. Chyba że opróżnisz pamięć podręczną przed każdym kliknięciem.
RedirectPermanent
to 301 i Redirect
to kod statusu 302
Wysyłają różne kody odpowiedzi do przeglądarki. 301 to stałe przekierowanie, 302 tymczasowe. Efekt końcowy jest taki sam, ale jeśli klient chce indeksować linki (najczęściej robią to wyszukiwarki), to stałe przekierowanie mówi klientowi, aby zaktualizował swoje rekordy, aby zignorował stary link i zaczął używać nowego . Tymczasowe przekierowanie informuje klienta, że strona na razie przekierowuje, ale nie ma usuwać starego łącza z indeksowanej bazy danych