为什么通过反向代理发出的请求比直接连接更快?

为什么通过反向代理发出的请求比直接连接更快?

我有一个 ESP8266/ NodeMCU 连接到我的 wifi,我用它将我的风扇变成智能家居设备。它有一个非常简单的 HTTP 服务器在运行,允许我发送 GET 和 POST 请求来获取或更改当前状态、速度等。

此外,我还设置了一个 nginx 反向代理,用于连接这些设备(和其他设备)。我注意到,通过 IP 直接连接到 ESP70ms比通过反向代理连接(~)要慢(~)30ms

Chrome 报告了以下数字:

直接连接:

  • ~20ms等待(TTFB)
  • ~45ms内容下载

通过 nginx:

  • ~30ms等待(TTFB)
  • ~00ms内容下载

如果我理解正确的话,nginx 能够将请求发送到 ESP,等待并在大约 30 毫秒内下载内容(向 chrome 总共报告为“等待”),而通过直接连接则需要接近 70 毫秒。怎么会这样?我知道内容下载接近 0ms,但我的 PC 和反向代理之间有 10G 连接。ESP 仅通过 wifi 连接,速度不是特别快,但 nginx <-> ESP 和 pc <-> ESP 也是如此。

另外:我注意到,如果我在直接连接几秒钟后尝试通过 nginx 连接,则 nginx 可能需要最多 3 秒才能重新建立连接。但如果我在两次连接之间留出更多时间,这种情况似乎不会发生。是不是因为 Nginx 以某种方式保持与 ESP 的连接打开,因此不需要握手 (不确定这是否是正确的术语) 每次?

相关内容