跳转


服务端跳转

跳转发生在服务器上,用户不会有任何感觉。,往往通过代码去控制,因此有些时候我们也不叫做跳转。具体的服务端跳转行为有很多,各个语言技术都有各自的特点。

  • 优点:跳转行为在 server 进行, 一次 tcp 连接完成相关操作,对用户是透明的,不会造成疑惑。

  • 缺点:对用户隐藏了信息,跳转行为都发生在 server 端,对 server 有压力。


客户端跳转

http层跳转

http 跳转是指 server 根据工作情况通过 http 返回状态码,利用 http 的重定向协议指示客户端浏览器跳转到相应页面的过程,一般返回码是 302。跳转发生在服务端发生数据给客户端过程中,用户能够感觉到.

  • 优点:响应速度快,在 http1.1 协议下通过合适的设置可以使用同一个 tcp 连接,节省网络时间,服务器及用户端都不需要进行额外的数据处理工作,节省时间。

  • 缺点:仅仅能做跳转没有其他功能,基于 js 及 html 的跳转可以选择延时跳转,但是 302 无法选择延时跳转等。

应用层跳转

  • html head 跳转(HTML refresh)

    跳转发生在服务端已经将数据传输到客户端以后,用户能够感觉到。

    • 优点:跳转方式灵活,可以指定延时跳转等等

    • 缺点:可能多次建立 tcp 连接,在低速网络下效率更低,浪费客户端的时间。

    在 html 代码的 head 中添加特殊标签,如下

    <meta http-equiv="refresh" content="5"; url="https://ffffffff0x.com/" />

    表示:5秒之后转到 ffffffff0x 首页,这个跳转需要浏览器具体解析 html 后采能进行。

  • js 跳转

    跳转发生在服务端已经将数据传输到客户端以后,用户能够感觉到

    • 优点:跳转方式灵活,可以指定延时跳转等等

    • 缺点:可能多次建立 tcp 连接,在低速网络下效率更低,浪费客户端的时间。

    通过在 html 代码中添加 js 代码,通过 js 代码实现跳转:

    <script language="javascript" type="text/javascript">
    window.location.href="https://ffffffff0x.com/";
    </script>

    这个跳转应该比 html head 跳转更向后延迟。


Source & Reference