У чому різниця між 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 - тимчасове. Кінцевий ефект той самий, але якщо клієнт хоче індексувати посилання (найпоширенішим клієнтом, який це робить, будуть пошукові системи), то постійне переспрямування повідомляє клієнту оновити свої записи, щоб ігнорувати старе посилання та почати використовувати нове . Temp redirect повідомляє клієнтові, що сторінка наразі переспрямовує, але не видаляє старе посилання з бази даних індексації