2011-02-04 5 views
5

Привет Один из советов в «подсказках производительности сайта» в разных блогах говорит «Избегайте перенаправления». В моем случае, я использую Response.Redirect для той же страницы. Я передаю запрос и отображаю соответствующую информацию пользователю.Какова альтернатива Response.Redirect() asp.net?

Response.Redirect("FinalPage.aspx?NextID=" + ID); 

Так что в нашей бизнес-логике я перезагружаю ту же страницу с различной информацией.

Так как я могу избежать перенаправления? Есть ли другая альтернатива? Кстати, моя цель - добиться некоторой производительности там.

ответ

6

Перенаправление - это R в шаблоне PRG, который является принятым шаблоном для обработки отправленных запросов. Так что это определенно не зло.

Однако, раньше было общим вопрос интервью: «В чем разница между Server.Redirect() и Server.Transfer() и которые нужно использовать» . Люди говорили Transfer, потому что это не было связано с поездкой туда и обратно, но с тех пор сеть сильно изменилась. В те дни вы не могли повторно использовать общую логику в представлениях, если не используете Transfer или Redirect, но в настоящее время особенно с ASP NET MVC существует множество способов сделать это.

В вашем случае, я все для PRG, и я считаю, что перенаправление семантически правильнее. Также он предотвращает повторную отправку формы, если пользователь нажимает F5 или обновляет.

0

Вы также можете сделать Server.Transfer, который не требует нового запроса для входа, что уменьшает нагрузку на сервер. Дополнительная информация, сравнивающая эти две цифры: here.

В вашем случае вы хотите сделать Перенаправление, потому что вы изменяете строку запроса и меняете что-то на странице, а не перекладываете обработку исходного запроса на другую страницу.

3

Рекомендация для не требуется переадресации.

Ваш случай отличается - вы передаете информацию на страницу, это не то же самое, что и регулярное перенаправление (т. Е. Перемещенная страница).

0

Главное «зло», если его можно назвать таковым, заключается в том, что для перенаправления требуется дополнительная поездка туда и обратно; клиент запрашивает одну страницу (обычно одну и ту же страницу, указав, что нажата конкретная кнопка), и сервер отвечает, говоря «запрос на эту страницу вместо», и затем выполняет браузер, в результате сервер фактически выполняет обслуживание на следующей странице.

Иногда это необходимо сделать, однако теперь есть намного лучшие способы управления навигацией на веб-сайте. Например, вместо кнопки «form», которая вызывает обратную передачу и перенаправление, вы можете использовать LinkButton, который будет вести себя как гиперссылка, позволяя браузеру запрашивать новую страницу напрямую. Вы также можете использовать MultiView, который отображает разные ASCX, и управлять навигацией с помощью перелистывания (однако, понимайте, что это может иметь свои собственные последствия для производительности, особенно при их использовании вложенным образом).

0

Я думаю, если вы хотите, чтобы перенаправлять на той же странице, то вместо того, чтобы делать Response.Redirect("FinalPage.aspx?NextID=" + ID); вы могли бы использовать NextID в ViewState также или Hidden Field, так что вы не должны перенаправлять SAME page, а затем проверить, что hidden field или viewstate вместо проверки QueryString

: D