HTTP——学习笔记(8)

HTTP中的一些协议内容会限制某些网站的功能使用

比如,Facebook这类的社交网站,需要实时地观察到海量用户公开发布的内容,而HTTP中的以下标准就会成为瓶颈:

一条连接上只可发送一个请求

请求只能从客户端开始。客户端不可以接受除响应以外的指令

请求/响应首部未经压缩就发送。首部信息越多延迟越大

发送冗长的首部。每次互相发送相同的首部造成的浪费较多

可任意选择数据压缩格式。非强制压缩发送。

针对以上问题有几种解决方法:

AJAX解决方法:

利用javascript和DOM达到局部web页面替换加载的异步通信手段,由于只更新一部分页面,响应中传输的数据量会因此而减少。

缺点:这种方法会导致大量请求发生,而且这个方法只是减少了数据的请求量,HTTP本身的问题并没有解决

Comet解决方法:

服务器端接收到请求,会将响应置于挂起状态,当服务器端有内容更新时,再返回该响应。

缺点:连接的持续时间变长,会消耗更多的资源,而且也没有解决HTTP本身存在的问题

SPDY协议解决办法:

在TCP/IP的应用层与运输层之间通过新加会话层的形式运作。考虑到安全性,SPDY规定通信中使用SSL。

SPDY以会话层的形式加入,控制对数据的流动,但还是采用HTTP建立通信连接。所以POST,GET方法还是有效的

加入SPDY后新增功能:

  多路复用流:所有请求的处理都在一条TCP连接上完成,因此TCP的处理效率得到提高

  赋予请求优先级:给请求分配优先等级,在发送请求时解决了因带宽低而导致响应变慢的问题

  压缩HTTP首部:之前HTTP协议也可以压缩,但是在SPDY中强制压缩了

  推送功能:支持服务器主动向客户端推送数据的功能,不必等待客户端的请求

  服务器提示功能:服务器可以主动提示客户端请求所需资源

WebSocket协议解决办法:

web浏览器与web服务器之间全双工通信标准

特点:

支持服务器端和客户端双向通信,服务器端不用等待客户端的请求

一旦建立起WEBSOCKET连接就一直保持连接状态,并且websocket的首部信息很少,减少了通信量

在发送请求的首部字段中加入Upgrade字段,进行websocket的握手,之后双方不再使用HTTP的数据帧而使用websocket独立的数据帧进行通信

HTTP2.0中的解决办法:

HTTP2.0中加入了以下技术以提高通信时的速度和性能

SPDY

HTTP Speed + Mibility

Network-FriendlyHTTP Upgrade

后两者主要是针对移动端的通信时的速度和性能

原文地址:https://www.cnblogs.com/ljuyi/p/6075161.html