zoukankan      html  css  js  c++  java
  • 长短轮询,长短连接

    长短轮询 相对于 客户端动作来讲是没有区别的,都是不停的去请求,区别在于后端的反应和前端的行为。(由于都比较占用服务端资源,就不说这些缺点了)

    短轮询 是前端不停的请求,后端有没有数据都会返回,前端拿到的是否为空数据也都继续请求,因此,前端的数据不太好。

    长轮询 也是前端不停的请求,后端去判断 有数据返回 ,之后 前端继续请求,没有数据 ,后端就把进程挂起,在前端也就是超时,超时后 前端继续请求,这样,前端获取的数据都是正常的。

    长短连接 其实指的是 http1.0 到 1.1 升级的新特性,

    HTTP/1.0 版的主要缺点是,每个TCP连接只能发送一个请求。发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建一个连接。

    TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。

    为了解决这个问题,有些浏览器在请求时,用了一个非标准的Connection字段。

    
    Connection: keep-alive
    

    这个字段要求服务器不要关闭TCP连接,以便其他请求复用。服务器同样回应这个字段。

    
    Connection: keep-alive
    

    一个可以复用的TCP连接就建立了,直到客户端或服务器主动关闭连接。

    1.1 版的最大变化,就是引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复用,不用声明Connection: keep-alive。现在我们用的都是1.1版本的http,默认长连接。

    客户端和服务器发现对方一段时间没有活动,就可以主动关闭连接。不过,规范的做法是,客户端在最后一个请求时,发送Connection: close,明确要求服务器关闭TCP连接。

    长短轮询和长短连接的区别


    第一个区别是决定的方式,一个TCP连接是否为长连接,是通过设置HTTP的Connection Header来决定的,而且是需要两边都设置才有效。而一种轮询方式是否为长轮询,是根据服务端的处理方式来决定的,与客户端没有关系。


    第二个区别就是实现的方式,连接的长短是通过协议来规定和实现的。而轮询的长短,是服务器通过编程的方式手动挂起请求来实现的。

  • 相关阅读:
    235. Lowest Common Ancestor of a Binary Search Tree
    112. Path Sum
    111. Minimum Depth of Binary Tree
    110. Balanced Binary Tree
    108. Convert Sorted Array to Binary Search Tree
    win7+iis7.5+asp.net 安装IIS 遇到的一些问题
    创建一个简单的WCF程序
    ROW_NUMBER() OVER函数的基本用法
    input type="file"
    Nightmare
  • 原文地址:https://www.cnblogs.com/zwhblog/p/8119390.html
Copyright © 2011-2022 走看看