response.redirect和server.transfer 之间的区别

可能重复:
Response.Redirect与Server.Transfer
Server.Transfer Vs. 的Response.Redirect

response.redirect和server.transfer有什么区别? 我知道的唯一区别是:在response.redirect中,浏览器URL更改为目标页面以及server.transfer,url保持不变! 还有其他区别吗?

在以下情况下应使用Response.Redirect:

  • 我们希望将请求重定向到我们服务器上的某些纯HTML页面或其他某个Web服务器

  • 我们不关心在每个请求上导致额外的往返服务器

  • 我们不需要保留原始请求中的查询字符串和表单变量

  • 我们希望我们的用户能够看到他在浏览器中重定向的新重定向URL(如果必要,可以将其加入书签)

在以下情况下应使用Server.Transfer:

  • 我们想将当前页面请求转移到同一服务器上的另一个.aspx页面

  • 我们希望保留服务器资源并避免不必要的往返服务器

  • 我们想保留查询字符串和表单变量(可选)

  • 我们不需要在用户Web浏览器中显示我们重定向请求的真实URL

Response.Redirect()将重定向头发送到客户端,客户端本身请求新页面。

Server.Transfer()仅停止呈现当前页面并开始呈现另一个页面。 客户不是更明智的。

这就是为什么Server.Transfer()不能用于重定向到另一台服务器提供的页面的原因。

Server.Transfer效率更高,因为使用Response.Redirect,你告诉浏览器发出另一个请求(另一个网络往返),而Server.Transfer是“服务器内部”…

表单数据在Server.Transfer上传输,但不在Response.Redirect上传输,另一个区别。 此外,如果没有弄错,Server.Transfer可以在同一台服务器上运行,而不是跨服务器页面。