在设置 HTTP/2、apache 和 Nginx 作为反向代理时进行长 TTFB / SSL 协商

在设置 HTTP/2、apache 和 Nginx 作为反向代理时进行长 TTFB / SSL 协商

正如标题所述,我意识到在设置 HTTP/2、Apache 和 Nginx 作为反向代理时,SSL 协商时间超过一秒导致 TTFB 部分非常长。

造成这种情况的因素可能是什么?最可能的原因是什么?这里一个例子。

附言: 找一个类似问题,但没有具体的建议,无法解决问题。

答案1

当限制您与 Fast-3G 的连接时,我不会说这实际上有那么长的时间。

TLS 握手确实需要一些时间才能完成,因为它需要多次往返。我的答案这里提供了一些关于如何减少这种情况的指导

此外,TLSv1.3 还进行了一些性能改进,因此它可以在 1 次往返内完成握手(在某些情况下甚至 0 次往返)。预计于今年(或明年)发布的 HTTP/3 也是基于 QUIC 而不是 TCP,并且在连接设置性能方面进行了一些改进。

获得此类技术改进的最简单方法是在网站前端使用 CDN 来处理用户连接,然后它们可以将请求传输回网站并在其边缘节点缓存内容。许多 CDN 已经支持 TLSv1.3,有些甚至支持 HTTP/3。它们也可能位于用户附近,因此往返时间 (RTT) 会更短,而且它们通常还具有高度优化的网络堆栈。

回到您的网站,我注意到的一件事是,您正在使用扩展验证证书,这需要在所有浏览器上进行吊销检查(这是前两个请求,它们必须在完成与您的网站的握手之前完成)。这里有一篇很好的帖子:https://nooshu.github.io/blog/2020/01/26/the-impact-of-ssl-certificate-revocation-on-web-performance/。对于非 EV 证书,Chrome 不会进行撤销检查(而是依赖于定期上传的已撤销证书的下载列表),但我看到您使用 Firefox 进行了测试,目前它始终会对 EV 和非 EV 证书进行撤销检查。由于浏览器不再在 URL 栏上为 EV 证书提供额外的绿色,因此 EV 证书已经失去了其用处,因此在下次证书续订时最好恢复为标准 DV 或 OV 证书,以提高 Chrome 的性能。

除了这些之外您的网站在 TLS 设置方面看起来不错,尽管您仍然启用了一些较旧的 TLS 设置,并且在浏览器上不应该使用它们来优先使用更安全的设置,但您应该关闭它们,除非您真的需要它们来支持不能使用较新设置的旧浏览器。

另外,TCP 层中可能存在一些调整,这些调整未在测试中显示出来,但它们确实需要专业知识,因此建议不要进行这些调整,除非您知道自己在做什么。

相关内容