HTTP瓶颈
- 一条连接上只可发送一个请求
- 请求只能从客户端开始,客户端不能接收除响应以外的指令
- 请求/响应首部未经压缩就发送。首部信息越多延迟越大
- 发送冗长的首部,每次互相发送相同的首部造成的浪费较多
- 可任意选择数据压缩格式,非强制压缩发送
SPDY
SPDY以会话层的形式加入,在应用层之后,控制对数据的流动。
SPDY规定通信中使用SSL
使用SPDY后,HTTP获得的额外功能:
- 多路复用流:通过单一的TCP连接,可以无限制处理多个HTTP请求,提高TCP的处理效率。
- 赋予请求优先级:可以给请求逐个分配优先级顺序。主要是为了解决在因发送多个请求时,带宽低会导致响应变慢的问题。
- 压缩HTTP首部:压缩HTTP请求和响应的首部,通信产生的数据包数量和发送的字节数变得更少。
- 推送功能:支持服务器主动向客户端推送数据的功能。
- 服务器提示功能:服务器可以主动提示,客户端请求所需的资源。由于在客户端发现资源之前就可以获知资源的存在,因此在资源已缓存的情况下,可以避免发送不必要的请求。
WebSocket:Web浏览器与Web服务器之间全双工通信标准
WebSocket是一个独立的协议标准
在客户端与服务器端建立起WebSocket协议的通信连接之后所有的通信都依靠这个专用协议进行。因为是建立在HTTP基础上的协议,因此连接的发起方仍是客户端。
主要特点:
- 推送功能:支持由服务器向客户端推送数据的推送功能。
- 减少通信量:只要建立起WebSocket连接,就希望一直保持连接状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也相应减少了。
WebSocket建立步骤:
1. 客户端发送握手请求,并将upgrade首部设置为websocket,告知服务器通信协议发生改变。
2. 服务器端收到请求后,返回状态码101 Switching Protocols的响应。
3. 随后切换并建立起WebSocket通信,通信时不再使用HTTP的数据帧,而采用WebSocket独立的数据帧。