HTTP/2和HTTP/1/1的区别
HTTP/2的全名:HTTP/2.0。它源于Google在2009年制定的SPDY(发音为speedy)协议。
HTTP/1.1的一些缺陷
这个协议是在网页尺寸很小的时候,不能超过100K,还没有CSS的时候创建的协议; 当前互联网网站首页数据量下载很大,达到1.9M,更重要的是首页上的对象元素平均有100多个,这100多个对象必须抓取完毕后才能显示整个首页。
HTTP1.1规定一个客户端允许连接到每个主机最多两个,这样不违反规定的情况下,聪明的网站将使用多个主机名,能够降低页面的装载时间。随着时间推移,规定中的**已经去除,现在客户端用6-8个连接每个主机,但是使用这个技术实现大量连接还是有**的。大部分网站需要38个TCP连接来显示网站,这个数字还在缓慢增加。将资源或图片放在另外一个主机中不能使用任何cookie。
HTTP1.1只能做几个最基本的表单验证和简单效果,其余需要有JavaScript介入来处理; HTTP1.1带宽占用率高; 使用单一Ajax异步处理; 单页应用程序和框架已经使用多年,比如我们想同时对几个页面发出请求,这HTTP 1.1搞不定。
HTTP/2.0的发布,其主要目标是减少延迟,提高通信效率。其特性包括如下。 HTTP/2.0的特性 1、HTTP/2使用二进制数据流,HTTP/1.x使用效率较低的文本数据。
2、HTTP/2支持头压缩 在请求后,返回的数据包括描述信息:来源,类型,长度,可以缓存的时间等。并且在HTTP/2中进行了压缩。
3、HTTP/2使用管道Pipelining传输 在HTTP1.1中服务器必须与接收请求,以相同的顺序进行收发响应。HTTP/2支持异步,可以更快的处理响应。
4、HTTP/2支持多路复用 在HTTP1.1里,在任何时间只能在TCP连接处理一个请求,浏览器同时请求几个连接时,如果是大或慢的资源会导致文件下载延迟。HTTP/2可以允许在同一时间的单个连接发出多个请求和接收多个响应。 假设两种火车代表不同的流。请看下图:
然后,将它们排在一个连接上进行传输,如同行驶在单个铁轨上一样:
HTTP/2连接可以承载数十或数百个流的复用,多路复用意味著来自很多流的数据包能够混合在一起通过同样连接传输,两列不同火车被混合在一起传输,当到达终点时,它们又被拆开组成两列不同的火车。 在HTTP1中你需要维持连接以便持续发送和接受数据,这导致数据拥挤和RTT浪费损耗,在HTTP2中,所有流都能时刻被切断提取数据包。
5、HTTP/2支持服务器推送 服务器可在请求前发送资源。客户端请求一个资源X,服务器端判断也许客户端还需要资源,在无需事先询问客户端情况下将资源Z推送到客户端,客户端接收到后,可以缓存起来以备后用。
比如在网页中引用一个js脚本,在HTTP1.x时,浏览器下载后以HTML解析,遇到 |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|