现在我正在阅读关于.NET网站性能和可伸缩性的文章。
我读了很多关于性能和可伸缩性的博客文章和微软书籍。
在上一个博客中,linked here。
在这篇博客中,第6点谈到了“使用httpserverutility.transfer而不是response.redirect”。
它在网站的性能上是否更有用,在博客中是否更有用,
“只有当您将人员转移到另一个物理web服务器时,才应该使用它们。对于服务器内的任何传输,请使用.transfer!您将节省大量不必要的http请求。”
有谁能告诉我,它在性能上比response.redirect更有用吗?
最佳答案
你不应该盲目地开始使用Server.Transfer
而不是Response.Redirect
;它们不是简单的替换品。Server.Transfer
有另一个页面“take-up”执行,在当前页面停止时执行,并给出其输出。这将保存重定向步骤-重定向向客户端发出302 - Moved
响应,并加载新的url,然后浏览器发出该新请求。这就是当您使用Server.Transfer
时被“保存”的内容。
但是你也可能会失去一些东西;比如,当你的用户试图给一个包含Server.Transfer
的页面添加书签时,他们可能会感到困惑,并发现一些完全出乎意料的东西出现了,因为Server.Transfer
并没有考虑到这种可能性。
您还需要做一些工作来确保您的请求值被正确地封送到“new”页;查询字符串、表单值和服务器端控件的值。
当你对asp.net管道和http协议有更深入的了解时,我会调用Server.Transfer
来考虑一些事情,基本上…你根本没有任何疑问,什么时候/为什么你会想用它。
编辑:还有,我不会把你在你链接的网站上读到的任何东西看得太认真。作者说,应该避免服务器端验证,而只在客户端进行验证。这一点,以及他们自己的许多建议都表明了他们对asp.net/http的了解非常有限。别让这样的人让你花那么多时间在不重要的事情上。