HTTP pipelining
HTTP pipelining技术指的是:把多个HTTP请求放到一个TCP连接中一一发送,在发送过程中不需要等待服务器对前一个请求的相应。但是客户端还是要按照发送请求的顺序来接受相应。
但是,服务器是要按照顺序处理请求,如果前一个请求非常耗时,那么后续请求都会受到影响,这就是所谓的线头阻塞(head-of-line blocking)。
靠大量新建连接是不能有效解决线头阻塞的问题,因为新建一个TCP连接的开销非常大。
正是由于HTTP pipelining不能彻底解决线头阻塞的问题,所以大部分桌面浏览器会默认关闭HTTP pipelining这一功能。
克服延迟的技术
在过去开发者会使用大量的技术降低延迟对用户带来的影响,其中很多技术直到现在都仍然在使用,其核心的原则就是:减少请求数(和体积),增大请求的并发数。
这些技术包括:
(1)雪碧图
(2)使用Base64格式的内联图片
(3)合并琐碎文件(将零散的JavaScript文件合并为一个大的文件,用一个请求完成下载)
(4)Domain Hash(将服务分散在尽可能多的主机上,来破解一个客户端只能和每个主机建立6-8个连接的限制)
(5)Cookie Free(将图片或其他资源分发到不同的域名,减少不必要的cookie传输)
HTTP2介绍
HTTP2就是为了解决HTTP1.1存在的各种问题,它起源于SPDY(这是一个由Google牵头开发的开源的协议)
HTTP2保留了HTTP1的URL结构,但是在实际的实现上,它只支持TLS协议,基于TLS协议进行HTTP2协商时有两种协议NPM和ALPN,二者的区别就是由谁(客户端还是服务器)来决定通信协议,ALPN让客户端发送协议优先级列表给服务器,有服务器选择合适的,NPN正好相反。
协商HTTP2协议时,会给服务器发送一个带升级(upgrade
)头部的保温,如果服务器支持HTTP2就会返回101 Switching
作为状态码&#x