В чем разница между Redirect()
иRedirectPermanent()
. Я читал несколько статей, но не понимаю, когда нужно использовать Redirect()
и RedirectPermanent()
. Можете показать кусочки на примере.
Ответы:
Основное различие между ними заключается в том, RedirectPermanent
что браузеру отправляется HTTP 301
код состояния (перемещен Redirect
навсегда ), тогда как код состояния отправляется HTTP 302
.
Используйте, RedirectPermanent
если ресурс был перемещен навсегда и больше не будет доступен в предыдущем местоположении. Большинство браузеров кэшируют этот ответ и автоматически выполняют перенаправление без повторного запроса исходного ресурса.
Используйте, Redirect
если ресурс может быть доступен в том же месте (URL) в будущем.
пример
Допустим, у вас есть пользователи в вашей системе. У вас также есть возможность удалить существующих пользователей. На вашем веб-сайте есть ресурс, /user/{userid}
который отображает подробную информацию о данном пользователе. Если пользователь был удален, вы должны перенаправить на /user/does-not-exist
страницу. В этом случае:
Если пользователь никогда не будет восстановлен снова, вы должны использовать, RedirectPermanent
чтобы браузер мог напрямую переходить к /user/does-not-exist
последующим запросам, даже если URL-адрес указывает на /user/{userid}
.
Если пользователь может быть восстановлен в будущем, вам следует использовать обычный Redirect
.
RedirectPermanent
может раздражать при отладке, потому что при втором нажатии действие контроллера будет пропущено, и точка останова не будет достигнута в исходной функции, если она перенаправляется в другое место. Это если вы не очищаете кеш перед каждым щелчком.
RedirectPermanent
301 и Redirect
302 код статуса
Они отправляют браузеру разные коды ответа. 301 - постоянный редирект, 302 - временный. Конечный эффект такой же, но если клиент хочет проиндексировать ссылки (наиболее распространенным клиентом, который это делает, будут поисковые системы), то постоянное перенаправление говорит клиенту обновить свои записи, чтобы игнорировать старую ссылку и начать использовать новую. . Временное перенаправление сообщает клиенту, что страница перенаправляется на данный момент, но не удаляет старую ссылку из своей базы данных индексации.