最近想玩点新花样,所以就想搞下http2,之前公司也有搞过go语言的,一直对https和http2比较好奇,就锤了下。
http2.0与1.1的性能对比这里有个从别人那里抄来的demo地址,上面分别使用和http1.1和http2来加载较大量的图片请求,差不多400个图片,http2的传输速度差不多是http1.1的2-4倍,极大地减少了网络的延迟。
http2历史及相关技术
2009年,谷歌公开了自行研发的 SPDY 协议,作为http2的前身他瞄准http1.x的痛点:高延迟,原因有2个
1.浏览器阻塞(HOL blocking):浏览器会因为一些原因阻塞请求。浏览器对于同一个域名一般同时只能有4-6 个连接(下面盗了一个图),超过浏览器最大连接数限制,后续请求就会被阻塞,这个被称作线头阻塞head of line block。
2.建立连接(Initial connection):HTTP 是基于 TCP 协议的,浏览器最快也要在第三次握手时才能捎带 HTTP 请求报文,达到真正的建立连接,但是这些连接无法复用会导致每次请求都经历三次握手和慢启动。三次握手在高延迟的场景下影响较明显,慢启动则对文件类大请求影响较大
spdy被当作 HTTP/2 的基础,有不少改进(可以不看,我抄的)
1:降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了线头阻塞的问题,降低了延迟同时提高了带宽的利用率。
2.请求优先级(request priori