我已经用 webpagetest 进行了速度测试。我的网站受 SSL 保护。由于某种原因,SSL 协商发生了两次。
索引 html 有一个 SSL 协商似乎是正确的。第二个请求是通过fetch完成的。我假设不需要第二次 SSL 协商。
fetch("/api/menu")
对于同一域的剩余请求,不再进行协商。
最佳答案
首先是 menu
的 TCP 连接,然后是 SSL 设置。这意味着它没有使用先前建立的 TCP 连接来创建新连接,而是创建了一个新连接。这个新的当然也需要 SSL。
当使用 HTTP/1.1 时,浏览器打开同一个站点的多个连接是很正常的,因为在一个连接中一次只能处理一个请求(这与 HTTP/2 不同)。由于在您的情况下第一个连接仍在用于其他请求,因此创建新连接可能会加快总交付时间。
还可以看出,第二次 SSL 设置比第一次花费的时间更少。这可能是因为它正在执行 session 恢复,即使用与在第一个连接中建立的相同的 SSL session 来加速 TLS 握手。
关于ssl 协商对同一个域发生多次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50738913/