代码之家  ›  专栏  ›  技术社区  ›  ram

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

  •  19
  • ram  · 技术社区  · 15 年前

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

    你什么时候会选择一个而不是另一个?

    关于ASP.NET/IIS7(应用程序池处于集成模式,启用32位应用程序=假),我注意到即使页面有302头,整个页面正文也会发送到客户端。

    I believe this is not the case with PHP ,只发送邮件头?引用 客户端重定向意味着以下步骤:客户端->服务器端->客户端->服务器端->客户端。

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

    有没有W3C标准或服务器端重定向实现不同于一个Web服务器技术到另一个?

    编辑:我只关心response.redirect(在ASP.NET中)而不关心server.transfer,至少在这个讨论中是这样的。

    3 回复  |  直到 14 年前
        1
  •  8
  •   BalusC    15 年前

    javascript示例实际上不是 重定向 . 没有办法 301/302 反应。这只是一个简单的请求,在页面到达后很长一段时间内的某个javascript事件中发生。如果您在页面加载期间这样做,那么它将比真正的重定向有更多的开销,并且它也不会在禁用JS的浏览器上工作。

    重定向将通过301/302响应从服务器端启动。所有webapp语言/框架默认为302。您通常可以通过添加一个额外的参数或代码行来实现301。301的好处在于,搜索机器人不再为特定的请求编制索引。

        2
  •  4
  •   DOK    15 年前

    在ASP.NET中,两种服务器端重定向有一个重要的区别。它们是response.redirect和server.transfer。

    如果你打电话 响应。重定向 ,这需要到服务器进行两次往返。在第一次调用服务器时,服务器响应将引导浏览器请求下一页。请求下一页将构成到Web服务器的第二次往返。

    如果你使用 服务器传输 只有一次往返。因此,网络流量要少得多。但是,使用server.transfer有一个限制,即目标页面必须在同一个Web服务器上。也就是说,你不能服务器。从你的网络应用转移到www.google.com。但你可以回应,重新定向。

    使用这两种方法中的任何一种都涉及到其他的细节,在使用它们之前,您可能需要研究这些细节。然而,我认为,在这个问题的背景下,注意到在任何语言中, 重定向可能会导致比实际需要的网络流量更大的流量。

        3
  •  -2
  •   Ray    15 年前

    这真的取决于你决定需要重新定向的地方。如果确定必须重定向的是服务器端代码,那么发出重定向命令的是服务器端代码。如果您可以确定需要重定向的客户端,那么从客户端代码执行重定向。

    从客户端来说,这可能更有效,因为您避免了服务器端的前后重定向。