现有的HTTP协议存在如下几个问题:
(1)一个连接一个请求
从request发出到response回来之间,TCP连接被独占,即所谓的单工方式。
以浏览器与WEB服务器交互为例,如果页面有多个资源需要加载,那么就会带来延迟。
(2)HTTP头不能压缩
只能对body进行压缩,不能对header压缩。
比如:一个cookie较多的网站,将会对带宽造成很大的浪费。
(3)冗余的HTTP头部
HTTP头部字段多,而且在同一通道中重复发送。
比如:User-Agent、Host等,对于同一页面来说,是相同的,没有必要每次发送都带上。
(4)只能由客户端发起请求。
所有的HTTP请求都只能由客户端发起,服务器只能被动回应。
这些问题在移动场景中尤为严重,不稳定的网络环境使之暴露无遗。
所幸的是,2012年,Google推出了基于TCP的应用层协议SPDY(取 speedy 谐音,意谓更快)。
当然,该协议并不是用于取代HTTP,而是对HTTP协议的增强,具体表现在以下几点:
(1)多路复用
一个连接允许多个并发request/response,比如:页面上多个资源可以在一起TCP连接中,并行请求得到。
(2)优先级
并发请求之间可以设置优先级。
(3)HTTP头压缩
压缩HTTP请求头。
(4)HTTP头标记
每一个SPDY端点会持续跟踪每一个在之前的请求中已经发送的HTTP报文头部,从而避免重复发送还未改变的头部。
(5)消息推送
SPDY的网页服务器还可以主动推送内容。
目前主流的浏览器(比如:Chrome、Firefox、Opera、IE)和WEB服务器(比如:Apache、Nginx)都支持SPDY。
阅读(732) | 评论(0) | 转发(0) |