Was ist der Unterschied zwischen Redirect()und RedirectPermanent(). Ich hatte einige Artikel gelesen, aber ich verstehe nicht , wann müssen wir nutzen Redirect()und RedirectPermanent(). Können Sie ein Beispiel zeigen?
Antworten:
Der grundlegende Unterschied zwischen beiden besteht darin, dass RedirectPermanentdem Browser ein HTTP 301Statuscode (dauerhaft verschoben) gesendet Redirectwird, während ein HTTP 302Statuscode gesendet wird.
Verwenden Sie RedirectPermanentdiese Option, wenn die Ressource dauerhaft verschoben wurde und an ihrem vorherigen Speicherort nicht mehr verfügbar ist. Die meisten Browser speichern diese Antwort im Cache und führen die Umleitung automatisch durch, ohne die ursprüngliche Ressource erneut anzufordern.
Verwenden Sie Redirectdiese Option, wenn die Ressource in Zukunft möglicherweise am selben Speicherort (URL) verfügbar ist.
Beispiel
Angenommen, Sie haben Benutzer in Ihrem System. Sie haben auch die Möglichkeit, vorhandene Benutzer zu löschen. Ihre Website verfügt über eine Ressource /user/{userid}, die die Details eines bestimmten Benutzers anzeigt. Wenn der Benutzer gelöscht wurde, müssen Sie zur /user/does-not-existSeite umleiten . In diesem Fall:
Wenn der Benutzer nie wieder wiederhergestellt wird, sollten Sie ihn verwenden, RedirectPermanentdamit der Browser /user/does-not-existbei nachfolgenden Anforderungen direkt darauf zugreifen kann, auch wenn die URL auf verweist /user/{userid}.
Wenn der Benutzer in Zukunft wiederhergestellt werden kann, sollten Sie einen regulären Benutzer verwenden Redirect.
RedirectPermanentdies beim Debuggen ärgerlich sein kann, da beim zweiten Klicken die Aktion des Controllers übersprungen wird und in der ursprünglichen Funktion kein Haltepunkt erreicht wird, wenn sie an eine andere Stelle umgeleitet wird. Es sei denn, Sie leeren Ihren Cache vor jedem Klick.
RedirectPermanentist 301 und Redirectist 302 Statuscode
Sie senden unterschiedliche Antwortcodes an den Browser. 301 ist eine permanente Weiterleitung, 302 eine temporäre. Der Endeffekt ist der gleiche, aber wenn der Client Links indizieren möchte (der häufigste Client, der dies tut, sind Suchmaschinen), weist eine permanente Umleitung den Client an, seine Datensätze zu aktualisieren, um den alten Link zu ignorieren und den neuen zu verwenden . Eine temporäre Umleitung teilt dem Client mit, dass die Seite derzeit umgeleitet wird, der alte Link jedoch nicht aus seiner Indizierungsdatenbank gelöscht werden soll