什么是SPDY?

spdy=speedy,是google开发基于TCP的应用层协议,通过压缩,多路复用,优先级来提高网页速度和安全性。
image.png

什么是多路复用?

多路复用技术是为了充分利用传输媒体,多路复用技术的实质是,将一个区域的多个用户数据通过发送多路复用器进行汇集,然后将汇集后的数据通过一个物理线路进行传送,接收多路复用器再对数据进行分离,分发到多个用户。

给大家带来的好处是啥?

网页速度约提升64%
前端无需改动,用户无感知,因为是在tcp基础上的,服务端也无需改动

做了什么?

复用流

在TCP连接上建立了全双工通道,更少的tcp连接,发送更密集的数据包,即使在1.1有管道通信,但在应对时间较长的连接时任然会阻塞。
对于服务器来说keep-alive 是很消耗性能的,需要不停发送心跳给客户端,目前一台普通服务器可承载的连接数大概2000左右

报头压缩

报头去掉了不必要的字段,对报头进行了压缩,有数据统计,单个页面可能发送上百个请求,一些字段会在一个请求中反复发送,报头的占用时间可能达到了整个请求时间的10%,在压缩后单个报头仅在几kb左右。

SSL

强制使用SSL,让SSL协议在现存的网络设施下有更好的安全性和兼容性。

优先级

浏览器发送请求时会对资源请求排列优先级,如果遇到tcp阻塞等情况,高优先级的会被挂起

服务端推送

image.png

  1. Server push:SPDY通过X-Associated-Content头试验了服务器推送数据给客户端的选项。这个头告诉客户端服务器将在客户端请求资源之前,推送资源给它。对于初始页面下载(例如用户初次访问这个网站),这样能大大提升用户体验。
  2. Server hint:相对于自动推送资源到客户端,在服务器事先知道客户端需要的资源的情况下,服务器使用X-Subresources头建议客户端请求特殊的资源。但是,服务器仍然在发送内容前等待客户请求。通过窄带,这个选项能减少一个客户端发现它所需要的资源的数百毫秒,可能更适合于非初始页面加载。

    SPDY和http2 的关系

    http2使用了SPDY的技术,ngnix ,node 等web服务器也在很早就使用了SPDY,然后淘汰了它。抄了技术然后把它拍死。