短轮询
定义:就是普通的轮询,指在特定的时间间隔,由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。短轮询是服务器立即发送响应,无论数据是否有效。
应用场景:传统的web通信,后台处理数据需要一定的时间,前端想要知道后端的处理结果,就要不定时向后端发出请求以获得最新情况。
缺点:请求中有一大半是无用,浪费带宽和服务器资源。而且实时性不高。适合用在对实时性要求不高的地方。
长轮询
定义:服务器收到请求之后如果有数据,就立刻响应请求,如果没有数据就将请求挂起一段时间,在这个时间里如果有数据就立即响应请求并关闭连接,没有数据就等到连接超时为止。客户端处理完响应信息后再向服务器发送新的请求。
优点:客户端请求次数将大大减小,节省了网络流量。
缺点:服务器挂起请求会消耗资源,
应用场景:长轮询一般用在实时性要求高的场景,因为http长轮询的控制权一直是在服务器端,而数据是在服务器端的,因此实时性高。
长连接和短连接
HTTP分为长连接和短连接,其本质上是TCP连接。TCP连接是一个双向的通道,它是可以保持一段时间不关闭的,因此TCP连接才有真正的长连接和短连接一说,HTTP协议是应用层的协议,而TCP协议才是真正的传输层协议,只有负责传输的这一层才需要建立连接。
短连接
HTTP1.0规定浏览器与服务器只能保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接。
缺点:使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里面包含的其他资源,因此,每一次请求都会造成无谓的TCP连接建立和断开,增加通信开销。
长连接
为了解决上述TCP连接的问题,HTTP/1.1提出了持久连接的方法,持久连接的特点是只要任意一端没有明确提出断开连接,则保持TCP连接状态。
在HTTP/1.1中,所有的连接都默认是持节连接,可以通过Connection:keep-alive
优点:减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器的负担。