要了解使用 CDN加速如何提高 SSL 性能,让我们首先回顾一下 SSL 连接与常规 TCP 连接有何不同。
典型的 TCP 连接是通过称为三向握手的过程建立的。在其中,客户端发出连接请求 (SYN),接收确认 (SYN/ACK),然后以自己的确认 (ACK) 进行响应。这将关闭循环并建立连接。
一、二、三……来回。假设没有打嗝,完成握手所需的时间应该正好等于单次往返时间 (RTT)。
另一方面,协商 SSL/TLS 连接需要一些额外的来回。这是因为浏览器和服务器现在还需要:
就一种相互兼容的加密方法达成一致。
经历一个相互验证的过程。
生成对称密钥,用于对会话期间交换的所有信息进行编码和解码。推荐阅读:《CDN加速的作用都有哪些》
这些额外的交互会增加流程的开销,导致额外的两次往返——或更多,具体取决于您的服务器配置。
例如:如果从旧金山到伦敦服务器的往返时间为 50 毫秒,那么建立 SSL/TLS 握手至少需要 150 毫秒。
解决方案:使用CDN加速减少往返时间
对于大多数人来说,SSL 安全性的好处远远超过连接时间较长的缺点。尽管如此,开销仍然令人讨厌,这就是为什么许多在线企业使用CDN加速来补偿一些增加的延迟。
缩短往返时间是CDN加速的核心功能,CDN加速是一项专门设计用于通过减少您的网站与其用户之间的物理距离来提高响应速度的服务。
通过减少往返时间,CDN加速还加快了 SSL/TLS 协商过程中的所有交互。因为握手至少需要三次往返,所以CDN加速每减少一毫秒,您就会获得三倍的效果。推荐阅读:《在选择CDN服务商时要考虑哪些因素》
例如:如果从旧金山到伦敦服务器的往返时间为 50 毫秒,那么建立 SSL/TLS 握手至少需要 150 毫秒。
请注意,仅当您的CDN加速已与源服务器建立开放连接时,上述场景才适用。否则,在 SSL/TLS 连接的第一段就位后,CDN加速仍需要发起第二次协商过程。在这里,SSL 开销保持不变(甚至可能更长一些)。
这里重要的是确保您的 CDN加速具有保持活动功能,也称为持久连接。通过保持活动,CDN加速一次在不同用户会话之间保持与服务器的开放连接几分钟。
这意味着,只要您的网站每隔几分钟被访问一次,CDN加速和源服务器就不必重新参与额外的 SSL/TLS 协商。您的所有访客都受益于更快的握手时间。
例如:与 LA 代理建立 SSL 连接后,在没有保活功能的情况下,CDN加速必须重新打开与伦敦源服务器的连接。洛杉矶和伦敦之间的往返时间为 30 毫秒,因此协商第二个 SSL 连接需要 90 毫秒。这使总握手时间回到 150 毫秒。推荐相关阅读:《海外服务器CDN加速与双线服务器有什么不同》