Smart Shield 通过在共享连接中批处理多个请求,减少了 Cloudflare 和您的源站之间的连接数。当来自上层数据中心 (upper-tier data center)(Cloudflare 缓存层中最靠近您源站的层)的请求需要到达您的服务器时,Smart Shield 会在单个连接上发送它们,而不是为每个请求打开新连接。这平均将减少 30% 到您源站的总连接数,从而降低了您源站的资源消耗,并降低了在高流量下发生连接耗尽的风险。
有关更多信息,请参阅 Smart Shield 发布博客文章 ↗。
每个 HTTP 请求都需要客户端和服务器之间的 TCP 连接。每个连接都由一对网络地址标识:源 IP 地址和端口,以及目标 IP 地址和端口。打开一个新的 TCP 连接会产生开销——它需要在客户端和服务器之间进行握手,如果连接是加密的,则还需要 TLS 协商。
连接复用(也称为持久连接或 keep-alive)通过在单个 TCP 连接上发送多个 HTTP 请求而不是为每个请求打开新连接,从而避免了这种开销。HTTP/1.1 将其作为默认行为。
例如,当浏览器打开与 shop.example.com 的连接时,该页面可能会引用数十个附加资源——样式表、图像、脚本和其他文件。如果没有连接复用,每个资源都需要自己的 TCP 连接。有了连接复用,所有这些请求都会通过同一个连接流转。
对于 HTTP/2,连接复用通过连接合并(connection coalescing)得到进一步扩展。只要满足以下两个条件,它就允许不同主机名的请求共享单个连接:
- 这些主机名解析为相同的目标 IP 地址和端口。
- 服务器上的 TLS 证书涵盖了这两个主机名(例如,证书在其主题备用名称 (Subject Alternative Names) 中同时列出了
shop.example.com和blog.example.com)。
这意味着最初为 shop.example.com 打开的连接也可以承载 blog.example.com 的请求,从而进一步减少了到您源站的总连接数。
在分配您的 Dedicated CDN Egress IPs 时,也会考虑连接复用和连接合并。