什么是pipeline?
pipeline是http1.1引入的新特性,流水线作业,是keepalive长连接的升华,可以实现一个连接做多次请求。
pipeline与keepalive的区别
当客户端提交多个请求的时候,keepalive场景下,第二个请求必须等到第一个请求响应接收完全后才能发起,跟TCP的停止等待协议一样,得到两个相应时间至少为2RTT;pipeline场景下,客户端不必等第一个请求处理完就可以马上发起第二个请求,得到两个相应的时间可能能欧达到1RTT。
Nginx与pipeline
Nginx支持pipeline,但是Nginx对pipeline的多个请求的处理不是并行的,是一个请求接一个请求的处理,只是在处理第一个请求的时候客户端可以发起第二个请求。
Nginx在处理数据时,会将读取的数据放到一个buffer里面,如果Nginx处理完前一个请求后,发现buffer里还有数据,就会认为剩下的数据是下一个请求的开始,就接下来处理下一个请求,否则就设置keepalive。
以上总结参考链接https://mp.weixin.qq.com/s/bXtI45d7M-XjkJH3ARZiMQ