服务器之间的区别是什么。转移和响应。重定向?
它们各自的优点和缺点是什么? 什么时候一种比另一种更合适? 什么时候不合适?
服务器之间的区别是什么。转移和响应。重定向?
它们各自的优点和缺点是什么? 什么时候一种比另一种更合适? 什么时候不合适?
当前回答
Response.Redirect()应该在以下情况下使用:
我们希望将请求重定向到我们服务器上的一些普通HTML页面或其他web服务器 我们不关心在每个请求上引起到服务器的额外往返 我们不需要保留原始请求中的查询字符串和表单变量 我们希望我们的用户能够看到新的重定向URL,他在他的浏览器重定向(并能够收藏它,如果它的必要)
Server.Transfer()应该在以下情况下使用:
我们希望将当前页面请求传输到同一服务器上的另一个.aspx页面 我们希望保留服务器资源并避免到服务器的不必要的往返 我们想保留查询字符串和表单变量(可选) 我们不需要在用户的Web浏览器中显示我们重定向请求的真实URL
其他回答
响应。重定向只是向浏览器发送一条消息(HTTP 302)。
服务器。传输在浏览器一无所知的情况下发生,浏览器请求一个页面,但服务器返回另一个页面的内容。
响应。重定向涉及一个额外的往返和更新地址栏。
服务器。传输不会导致地址栏更改,服务器会用来自另一个页面的内容响应请求
e.g.
响应。重定向:
在客户机上,浏览器请求一个页面http://InitiallyRequestedPage.aspx 在服务器上响应请求,302传递重定向地址http://AnotherPage.aspx。 在客户机上,浏览器向地址http://AnotherPage.aspx发出第二个请求。 在服务器上响应来自http://AnotherPage.aspx的内容
服务器。转让:
在客户机上,浏览器请求一个页面http://InitiallyRequestedPage.aspx 在服务器上。转至http://AnotherPage.aspx 在服务器上,对http://InitiallyRequestedPage.aspx的请求做出响应,从http://AnotherPage.aspx返回内容
响应。重定向
优点:- RESTful -它改变地址栏,地址可以用来记录请求之间的状态变化。
缺点:- 慢——在客户端和服务器之间有一个额外的往返。当客户端和服务器之间存在大量延迟时,这样做的代价可能会很高。
服务器。转移
优点:- 快。
缺点:- 状态丢失-如果您正在使用服务器。转移来改变应用程序的状态以响应回贴,如果页面随后被重新加载,该状态将丢失,因为地址栏将与第一次请求时相同。
响应。重定向:告诉浏览器可以在新的位置找到所请求的页面。然后,浏览器向新页面发起另一个请求,在浏览器中加载其内容。这将导致浏览器产生两个请求。
服务器。转移:它将执行从服务器上的第一个页面转移到第二个页面。就浏览器客户端而言,它只发出一个请求,初始页面就是响应内容的页面。 这种方法的好处是减少了一次从客户机浏览器到服务器的往返。此外,任何提交的表单变量和查询字符串参数也可用于第二个页面。
Response.Redirect()应该在以下情况下使用:
我们希望将请求重定向到我们服务器上的一些普通HTML页面或其他web服务器 我们不关心在每个请求上引起到服务器的额外往返 我们不需要保留原始请求中的查询字符串和表单变量 我们希望我们的用户能够看到新的重定向URL,他在他的浏览器重定向(并能够收藏它,如果它的必要)
Server.Transfer()应该在以下情况下使用:
我们希望将当前页面请求传输到同一服务器上的另一个.aspx页面 我们希望保留服务器资源并避免到服务器的不必要的往返 我们想保留查询字符串和表单变量(可选) 我们不需要在用户的Web浏览器中显示我们重定向请求的真实URL
Response.Redirect()会将您发送到一个新页面,更新地址栏并将其添加到浏览器历史记录中。在浏览器上,您可以单击返回。
Server.Transfer()不会更改地址栏。你不能反击。
当我不想让用户看到我要去哪里时,我使用Server.Transfer()。有时在“加载”类型的页面上。
否则,我将总是使用Response.Redirect()。