Redirect() vs RedirectPermanent() в ASP.NET MVC

В чем разница между Redirect() и RedirectPermanent(). Я прочитал несколько статей, но я не понимаю, когда мы должны использовать Redirect() и RedirectPermanent(). Можете ли вы показать примеры.

Ответ 1

Основное различие между ними состоит в том, что RedirectPermanent отправляет браузеру код статуса HTTP 301 (перемещенный постоянный), тогда как Redirect отправит код состояния HTTP 302.

Используйте RedirectPermanent, если ресурс был перемещен навсегда и больше не будет доступен в предыдущем местоположении. Большинство браузеров кэширует этот ответ и автоматически выполняет перенаправление без повторного запроса исходного ресурса.

Используйте Redirect, если ресурс может быть доступен в том же месте (URL) в будущем.

Пример

Скажем, что у вас есть пользователи в вашей системе. У вас также есть возможность удалить существующих пользователей. На вашем веб-сайте есть ресурс /user/{userid}, который отображает детали данного пользователя. Если пользователь был удален, вы должны перенаправить на страницу /user/does-not-exist. В этом случае:

Если пользователь снова будет никогда, вы должны использовать RedirectPermanent, чтобы браузер мог перейти непосредственно к /user/does-not-exist в последующих запросах, даже если URL указывает на /user/{userid}.

Если пользователь может не удаляться в будущем, вы должны использовать обычный Redirect.

Ответ 3

Они отправляют разные коды ответов в браузер. 301 - постоянная переадресация, 302 - временная. Конечный эффект одинаков, но если клиент хочет индексировать ссылки (наиболее распространенным клиентом, который делает это, будут поисковые системы), то постоянное перенаправление сообщает клиенту обновлять свои записи, чтобы игнорировать старую ссылку и начать использовать новую, Временное перенаправление сообщает клиенту, что страница перенаправляется на данный момент, но не удаляет старую ссылку из базы данных индексирования