是否有 SSL 握手的 dns 预取等价物?

Is there a dns-prefetching equivalent for SSL handshakes?

我们从几个 subdomains/3rd 方加载数据。这会导致每个域进行大约 100 毫秒的 SSL 握手。我想知道是否有一种 "pre-fetch-handshake" 类似于 dns-prefetching 工作方式的方法。 dns-prefetching 是否已经这样做了?

我怀疑是否存在预取握手,我怀疑它是否有意义。在页面中为 link 完成 DNS 预取,以便浏览器在用户决定单击 link 时已经知道目标主机的 IP 地址。这可能在加载页面后立即发生,几分钟后,几小时后或永远不会发生。 DNS 预取也不绑定服务器上的任何资源。它只是通过询问上游 DNS 解析器来预热本地 DNS 缓存,上游 DNS 解析器可能已经有记录或将解析查询并因此在缓存中有条目,也可用于其他客户端。

与此相反,HTTPS 的预取握手需要直接创建到目标服务器的 TCP 连接,进行 SSL 握手,然后等待客户端点击。这会占用客户端和服务器的资源,因此在一段时间不活动后,服务器将关闭连接以释放这些资源。因此,在许多情况下,这只会浪费双方的资源,因为 link 永远不会被点击,或者只有在服务器已经关闭空闲连接后才会被点击。

如果 link 指向一个已经存在连接的站点,例如从某个站点加载页面时的同一站点 link,情况会有所不同。今天的浏览器使用持久的 HTTP 连接,并会尝试将与站点的连接保持打开状态一段时间,以防需要发送更多请求。如果用户随后单击同一站点 link,则可能会使用现有连接,该连接在之前的请求中仍处于打开状态。当然,这些连接也会占用服务器上的资源,因此服务器也会在空闲时间后关闭连接。