当前位置:  开发笔记 > 编程语言 > 正文

客户端与服务器端重定向的最佳实践:何时使用什么?

如何解决《客户端与服务器端重定向的最佳实践:何时使用什么?》经验,为你挑选了2个好方法。

据我所知,大多数语言都支持服务器端重定向(asp.net: Response.Redirect, PHP: header( 'newpage' ) ; ).您也可以使用JavaScript进行重定向(window.location.href="newLocationURL").

你何时会选择一个而不是另一个?

关于ASP.net/IIS7(集成模式下的app池,启用32位apps = false),我注意到即使页面有302标题,整个页面主体也会被发送到客户端.

而且我相信这不是用PHP的情况下,只有头部被发送?在客户端引用Redirect意味着以下步骤:客户端 - >服务器端 - >客户端 - >服务器端 - >客户端.

服务器端重定向意味着:客户端 - >服务器端 - >客户端(仅限标头)* - >服务器端 - >客户端.

W3C标准或服务器端重定向实现是否因Web服务器技术而异?

编辑:我只关心Response.Redirect(在asp.net中)而不是server.transfer,至少对于这个讨论



1> BalusC..:

JavaScript示例实际上不是重定向.没有301/302响应的方法.这只是一个简单的请求,在页面到达后很长一段时间内发生在某个Javascript事件中.如果您在页面加载期间执行此操作,那么它将比实际重定向具有更多开销,并且它也不适用于禁用JS的浏览器.

重定向将从服务器端启动,并具有301/302响应.所有webapp语言/框架默认为302.您通常可以通过添加一个额外的参数或代码行来指示它.301的好处是通过搜索机器人不再索引特定请求的方式.



2> DOK..:

在ASP.Net中,两种服务器端重定向之间有重要区别。它们是Response.Redirect和Server.Transfer。

如果调用Response.Redirect,则需要两次往返服务器。在第一次调用服务器时,服务器响应指示浏览器请求下一页。请求下一页构成Web服务器的第二次往返。

如果使用Server.Transfer,则只有一次往返。因此,网络流量要少得多。但是,使用Server.Transfer有一个限制,那就是目标页面必须位于同一Web服务器上。也就是说,您不能从网络应用程序将Server.Transfer传输到www.Google.com。但是您可以Response.Redirect到它。

在使用这些方法之前,还需要研究其他细节。但是,我认为在此问题的上下文中值得注意的是,在任何语言中,Response.Redirect都可能导致比实际所需的网络流量大得多的网络流量。

推荐阅读
赛亚兔备_393
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有