探索式的实践-SPDY&期盼已久的HTTP2

发布时间 2023-04-06 16:16:05作者: 漁夫

探索式的实践-SPDY

SPDY是什么

SPDY是Google开发的基于传输控制协议的应用层协议,开发组正在推动SPDY成为正式标准(现为互联网草案)。SPDy协议旨在通过压缩,多路复用和优先级来缩短网页的加载时间和提高安全性(SPDY是Speedy的拟音,意思是更快)

 

HTTP 协议的缺点

1.单路链接,请求低效  

  HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个资源,浏览器只能通过建立多个连接来解决。此外在 HTTP 中对请求是严格的先入先出(FIFO)进行的,如果中间某个请求处理时间较长会阻塞后面的请求。

(注:虽然 HTTP pipelining 对连接请求做了改善,但复杂度增加很大,并未普及)

2. HTTP 只允许由客户端主动发起请求

  服务端只能等待客户端发送一个请求,在可以满足预加载的现状是一种桎梏。

3. HTTP 头冗余

  HTTP 头在同一个会话里是反复发送的,中间的冗余信息,比如 User-Agent、Host 等不需要重复发送的信息也在反复发送,浪费带宽和资源。

 

SPDY 协议的改进

1. 多路复用 请求优化

  SPDY 规定在一个 SPDY 连接内可以有无限个并行请求,即允许多个并发 HTTP 请求共用一个 TCP会话。这样 SPDY 通过复用在单个 TCP 连接上的多次请求,而非为每个请求单独开放连接,这样只需建立一个 TCP 连接就可以传送网页上所有资源,不仅可以减少消息交互往返的时间还可以避免创建新连接造成的延迟,使得 TCP 的效率更高。

  此外,SPDY 的多路复用可以设置优先级,而不像传统 HTTP 那样严格按照先入先出一个一个处理请求,它会选择性的先传输 CSS 这样更重要的资源,然后再传输网站图标之类不太重要的资源,可以避免让非关键资源占用网络通道的问题,提升 TCP 的性能。

2. 支持服务器推送技术

  服务器可以主动向客户端发起通信向客户端推送数据,这种预加载可以使用户一直保持一个快速的网络。

3. SPDY 压缩了 HTTP 头

  舍弃掉了不必要的头信息,经过压缩之后可以节省多余数据传输所带来的等待时间和带宽。

4. 强制使用 SSL 传输协议

  Google 认为 Web 未来的发展方向必定是安全的网络连接,全部请求 SSL 加密后,信息传输更加安全。

 

 

SPDY的意义

按照 Google 的说法,SPDY 被创造出来的唯一目的就是让 Web 更快(strive to make the whole web fast),其名字 SPDY(Speedy) 也似乎在暗示着这一点。那么 SPDY 的意义又在哪里呢?

1.普通用户

  对于使用者来说,隐藏在浏览器下面的 SPDY 相比 HTTP 没有任何区别,但是我们可以感觉到 Google 服务在 Chrome 下异常的快,这就是 SPDY 的功劳了。此外网站信息传输加密后不用担心信息被截取等,大大增加了安全性和保密性。

 

2.前端人员

  对于前端工程师们来说,提升页面效率是一件很重要的事情,目前大多采用像 CSS Sprites 等方法来优化网站,对于因为页面加载时每张图片、icon 都请求一个连接甚至采用在不同页面引用不同图片来降低一个页面内图片的请求数量。而现在有了 SPDY 的请求优化可以将请求顺序进行重排,这样可以在很大程度上缓解页面加载时图片请求带来的影响

 

3.运维人员

  SPDY 在降低连接数目的同时,还使得服务器上每个客户端占用的资源也减少,从而可以释放出更多内存和 CPU 。此外 SPDY 综合起来可以将浏览速度提升一倍,页面加载延迟方面的改进达 64% 。

 

 

期盼已久的HTTP2

 

 

 

HTTP2.0性能增强的核心:二进制分帧

 

 

HTTP2.0首部压缩

 

 

 

HTTP2.0多路复用

 

 

 

 单链接多资源的优势

可以减少服务链接压力,内存占用少了,连接吞吐量大了

由于TCP连接减少而使网络拥塞状况得以改观

慢启动时间减少,拥塞和丢包恢复速度更快

并行双向字节流的请求和响应

 

 并行交错地发送请求,请求之间互不影响

并行交错地发送响应,响应之间互不干扰

只使用一个连接即可并行发送多个请求和响应

消除不必要的延迟,减少页面加载的时间

请求优先级

高优先级的流都应该优先发送

优先级不是绝对的

不同的优先级混合也是必须的

服务器推送