一、HTTP的瓶颈
1.一条连接上只发送一个请求
2.请求只能从客户端开始。客户端不可以接收除响应以外的指令。
3.请求/响应首部未经压缩就发送。首部信息越多延迟越大。
4.可任意选择数据压缩格式。非强制压缩发送。
二、解决方法
1.Ajax解决方法:
和以前的同步通信相比,由于它只更新一部分页面,响应中传输的数据量会因此而减少。但仍未解决HTTP协议本身存在的问题。
2.Comet解决方法:
一旦服务器端有内容更新,Comet不会让请求等待,而是直接给客户端返回响应,也仍未解决HTTP协议本身存在的问题。
3.SPDY目标:
在协议层做了改动。SPDY没有完全改写HTTP协议,而是在TCP/IP的应用层与传输层之间通过新加会话层的形式运作。同时,考虑安全性问题,SPDY规定通信中使用SSL。
(1)多路复用流:单一的TCP连接,可以无限制处理多个HTTP请求
(2)赋予请求优先级:给请求逐个分配优先级顺序。
(3)压缩HTTP首部:减少通信产生的数据包的数量和发送的字节数。
(4)推送功能:支持服务器主动向客户端主动推送数据的功能。
(5)服务器提示功能:服务器可以主动提示客户端请求所需的资源。
用SPDY时,Web服务器要对应作出相应的改动;SPDY的确是一种可有效消除HTTP瓶颈的技术,但很多Web网站存在的问题并非仅仅是由HTTP瓶颈所导致。
4.全双工通信的WebSocket
WebSocket协议:在HTTP连接建立以后,需要完成一次"握手"步骤
推送功能:支持由服务器向客户端推送数据的推送功能。
减少通信量:只要建立起WebSocket连接,就希望一直保持通信状态。和HTTP相比,不但每次连接时的总开销减少,而且由于WebSocket的首部信息很小,通信量也减少了。
握手请求:Upgrade:websocket
握手响应:返回状态码101 Switching Protocols
(1)SPDY
(2)HTTP Speed + Mobility
(3)Network-Friendly HTTP Upgrade