什么是SPDY?
spdy=speedy,是google开发基于TCP的应用层协议,通过压缩,多路复用,优先级来提高网页速度和安全性。
什么是多路复用?
多路复用技术是为了充分利用传输媒体,多路复用技术的实质是,将一个区域的多个用户数据通过发送多路复用器进行汇集,然后将汇集后的数据通过一个物理线路进行传送,接收多路复用器再对数据进行分离,分发到多个用户。
给大家带来的好处是啥?
网页速度约提升64%
前端无需改动,用户无感知,因为是在tcp基础上的,服务端也无需改动
做了什么?
复用流
在TCP连接上建立了全双工通道,更少的tcp连接,发送更密集的数据包,即使在1.1有管道通信,但在应对时间较长的连接时任然会阻塞。
对于服务器来说keep-alive 是很消耗性能的,需要不停发送心跳给客户端,目前一台普通服务器可承载的连接数大概2000左右
报头压缩
报头去掉了不必要的字段,对报头进行了压缩,有数据统计,单个页面可能发送上百个请求,一些字段会在一个请求中反复发送,报头的占用时间可能达到了整个请求时间的10%,在压缩后单个报头仅在几kb左右。
SSL
强制使用SSL,让SSL协议在现存的网络设施下有更好的安全性和兼容性。
优先级
浏览器发送请求时会对资源请求排列优先级,如果遇到tcp阻塞等情况,高优先级的会被挂起
服务端推送
- Server push:SPDY通过X-Associated-Content头试验了服务器推送数据给客户端的选项。这个头告诉客户端服务器将在客户端请求资源之前,推送资源给它。对于初始页面下载(例如用户初次访问这个网站),这样能大大提升用户体验。
- Server hint:相对于自动推送资源到客户端,在服务器事先知道客户端需要的资源的情况下,服务器使用X-Subresources头建议客户端请求特殊的资源。但是,服务器仍然在发送内容前等待客户请求。通过窄带,这个选项能减少一个客户端发现它所需要的资源的数百毫秒,可能更适合于非初始页面加载。
SPDY和http2 的关系
http2使用了SPDY的技术,ngnix ,node 等web服务器也在很早就使用了SPDY,然后淘汰了它。抄了技术然后把它拍死。