一个TCP/IP连接中的多个HTTP GET请求 - 处理并行或顺序

Fra*_*fer 10 tcp http nginx

我们收到了很多googlebot请求.

googlebot通过11个HTTP GET请求请求最多11个不同的文件,所有这些都在一个TCP/IP连接中.

是通过服务器处理的这些GET请求(所有在同一TCP/IP连接中)

  • 平行
  • 还是按顺序?

或者是服务器?

  • 在这种情况下,nginx如何处理这个?

谢谢你的帮助

Sur*_*mar 14

是通过服务器处理的这些GET请求(所有在同一TCP/IP连接中)

平行还是顺序?

它按顺序处理.它被称为流水线.流水线操作是HTTP/1.1的一部分,它意味着客户端无需等待当前请求完成,然后通过持久连接发送下一个请求.它可以通过同一连接发送多个请求,而无需等待先前请求的响应.请求以FIFO方式处理,即客户端可以按顺序发送多个请求,服务器应该按照接收请求的相同顺序向每个请求发送响应.因此,如果您使用的服务器符合HTTP/1.1,则应按顺序处理.


Hab*_*bie 5

HTTP 流水线按顺序发生。HTTP 中不支持任何类型的交错。

但是,通过流水线,服务器可能在完成对最后一个请求的服务之前就知道所有请求。理论上,它可以并行执行必要的 I/O。

不过,看起来 nginx 不会这样做。

  • 我已经使用 Apache Web 服务器运行了几次测试,并且可以确认它实际上是连续的 - 早期的慢速请求会延迟后续更快请求的处理。 (2认同)