现在使用HTTP的地方越来越多,但是HTTP因为协议上的限制以及自身性能有限,所以在性能上还不是最好。现有的解决方案就是在HTTP的基础上添加了新的功能。
SPDY
Google在2010年发布了SPDY,目标是解决HTTP性能瓶颈,缩短Web页面加载时间(50%)
Ajax解决方案,可以是Web页面局部更新,但是如果是需求实时获取服务器信息,会有大量请求产生。
Comet解决方案,一旦服务器有内容更新,Comet不会让请求等待,直接给客户端返回响应。Comet会在服务器收到请求后处于挂起状态,等服务器有更新的时候,再返回响应。这样会造成一次链接的等待时间过长,为了未知链接会消耗更多的资源,HTTP本身问题还是没有解决。
因为Ajax和Comet都不是很完美,所以后面有了持续开发的SPDY。
SPDY在TCP/IP的应用层和传输层之间通过新加会话层的形式运作,考虑到安全问题,通信中使用了SSL。
SPDY控制对数据的流动,但还是采用HTTP建立通信连接,可以使用HTTP的GET和POST等方法。Cookie以及HTTP报文等。
在使用SPDY后可以获得一下功能:
- 多路复用:通过单一TCP连接,可以无限制处理多个HTTP请求。所有请求处理都在一条TCP连接上完成,很好的利用了连接。
- 赋予请求优先级:可以给请求逐个分配优先级,为了在发送多个请求时,解决因为宽带地而导致响应变慢的问题。
- 压缩HTTP首部:压缩HTTP首部,使得通信产生的数据包数量和发送的字节数更少。
- 推送功能:支持服务器主动向客户端推送数据的功能。服务器可以直接发送信息,不用等待客户端请求。
- 服务器提示功能:服务器可以主动提示客户端请求所需的资源。
把该技术导入实际的Web网站进展不佳。
WebSocket
WebSocket网络技术正是为了解决这些问题而实现的一套新协议及API。
WebSocket通信协议在2011-12-11被RFC 6455 - The WebSocket Protocol定位标准
WebSocket是Web浏览器和Web服务器之间全双工通信标准。
WebSocket建立在HTTP基础上,发起方还是客户端,但是在建立连接后,客户端和服务器都可直接向对方发送报文。
为了实现WebSocket通信,在HTTP建立连接后,需要完成一次“握手”的步骤,需要用到HTTP的Upgrade首部字段,以达到握手的目的。
成功握手确定WebSocket连接后,通信时不再使用HTTP数据帧,采用WebSocket独立的数据帧。
HTTP 2.0
HTTP2.0在2014-11实现标准化。目标是改善用户在使用Web中的速度体验。