Response.Redirect()asp.net的替代方案是什么?

时间:2011-02-04 16:08:30

标签: asp.net performance response.redirect

嗨各种博客中“网站性能提示”的提示之一是“避免重定向”。就我而言,我使用Response.Redirect作为同一页面。我传递一个查询字符串并向用户显示适当的信息。

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

因此,在我们的业务逻辑中,我正在使用不同的信息重新加载相同的页面。

那么我该如何避免重定向?还有其他选择吗?顺便说一下,我的目标是在那里获得一些表现。

5 个答案:

答案 0 :(得分:6)

重定向是PRG模式中的R,它是用于处理已发布请求的可接受模式。所以这绝对不是邪恶的。

但是,曾经有一个常见的面试问题Server.Redirect()Server.Transfer()之间有什么区别?必须使用哪一个?”< / em>的。人们常说Transfer因为它不涉及往返,但网络自那时起发生了很大的变化。在那些日子里,你不能重复使用视图中的通用逻辑,除非你使用转移或重定向,但现在尤其是ASP NET MVC,有很多方法可以做到这一点。

在您的情况下,我全都是PRG,我相信重定向在语义上更正确。如果用户单击F5或刷新,它也会阻止表单重新提交。

答案 1 :(得分:3)

建议用于不必要的重定向。

您的情况不同 - 您正在向页面传递信息,这与常规重定向(即移动的页面)并不完全相同。

答案 2 :(得分:0)

您还可以执行Server.Transfer,它不需要新请求,从而减轻服务器上的负担。比较两者的更多信息是here

在您的情况下,您确实想要进行重定向,因为您正在修改查询字符串并更改页面上的内容,而不是将初始请求的处理转移到另一个页面。

答案 3 :(得分:0)

主要的“邪恶”如果可以被称为重定向需要额外的往返;客户端请求一个页面(通常是同一页面,指定单击特定按钮),服务器响应说“请求此页面”,然后浏览器符合,导致服务器实际提供下一页。 / p>

有时需要这样做,但现在有更好的方法来控制网站中的导航。例如,代替导致回发和重定向的“表单”按钮,您可以使用行为类似于超链接的LinkBut​​ton,允许浏览器直接请求新页面。您还可以使用显示不同ASCX的MultiView,并通过视图翻转控制导航(但是,要了解这可能有其自身的性能影响,尤其是在以嵌套方式使用它们时)。

答案 4 :(得分:0)

我认为如果您想重定向到同一页面而不是Response.Redirect("FinalPage.aspx?NextID=" + ID);,您可以NextID使用ViewStateHidden Field,这样您就不需要重定向SAME page,然后检查hidden fieldviewstate,而不是检查QueryString

:d