图1:MediaNova 对静态资源服务 TTFB 优劣的看法
HTTP相关名词介绍
什么是往返时间 RTT ?
在电话与电报被发明以前,邮政的
快递员通过携带信件并不断地在两地往返来帮助人们传输信息。而今天,我们同样需要依靠网络信号地不断往返来帮助我们在计算机与服务器之间实现信息的交换。
网络信号通过物理线路进行单次往返所需要的时间即为:
RTT(Round-trip Time)
图2:众所周知的 ping 命令可以估算往返时间
对 RTT 更详细的解说可以参考 Cloudflare 这篇优秀的中文内容:《什么是往返时间?》。
什么是首字节 TTFB ?
现代主流的网络通信通常很不简单,为了安全与可靠性往往需要
多次来回(RTT 往返)充分准备后才能正式开始传递信息。
证实传递信息之前所有的准备时间即为:
TTFB(Time to First Byte)
一次 TTFB 会发生几次 RTT ?
以用户发起一次全新的访问为例(浏览器默认触发 HTTP 访问),下面是完整的 RTT 过程:
图3:Halfrost - 直观感受 TLS 握手流程 (上)
缤纷云S4 如何优化 TTFB
从上图表格可以发现,这些步骤最少可以浓缩至3步(3-RTT)。毫无疑问,这就是我们的理想目标。
* 之前缤纷云发布的《2024年中国大陆对象存储网络性能跟踪报告》中提到只有缤纷云S4的TTFB时间约等于3次RTT。
优化方法
从图3的表格中不难发现 —— 优化 TTFB 与两件事强相关:
- 尽可能减少 RTT:尽可能
减少步骤 - 优化处理速度:每次 RTT 的
耗时更少
对比测试
以 阿里云OSS 和 缤纷云S4 对比为例(可用区均为:中国·江苏):
用浏览器访问并查看耗时跟踪:
图4:OSS 江苏的 TTFB 的时间为 187ms
图5:S4 江苏的 TTFB 的时间为 90ms
通过上图的比较可以看出:
- OSS 共有约 5次 RTT(183ms ÷ 36 = 5.1x)
- S4 共有约 3次 RTT(87ms ÷ 27 = 3.2x)
根据图3表格:HTTPS交换信息至少需要3次RTT
OSS为何花了更长的时间
我们使用 Wireshark 跟踪上面的请求:
图6:Wireshark 对 OSS 的 TTFB 过程抓包
图7:Wireshark 对 S4 的 TTFB 过程抓包
观察上图的对比不难发现
- TLS 协议不同,OSS 为 TLS 1.2,S4 为 TLS 1.3
- 相比 S4,OSS 多了 2次 RTT:
- TLS 1.2握手第二步 - 加密
- OCSP验证
没有魔法 —— S4 通过:
- 支持 TLS1.3 使 TTFB 减少一次 RTT;
- 支持 OCSP Stapling(OCSP 装订)使客户端总是可以避免额外的 OCSP 验证,且无损任何安全性;
Tip. 缤纷云在进行 OCSP 装订的时候,会全自动优化流程(包括 跨境加速、智能缓存 等)。这意味着:在缤纷云对象存储中 免费证书 的性能足以 媲美企业级商业证书。
探测服务器对 OCSP Stapling 的支持
方法一、使用 OpenSSL 命令:
图8:OSS 不支持 OCSP Stapling
图9:S4 支持 OCSP Stapling
方法二、使用 MySSL 等在线证书检测服务:
RTT 优化小结
缤纷云 S4 优化的主要方式有:
- 支持 TLS 1.3,节省一个完整的RTT;
- 支持 OCSP Stapling,省略「证书校验」最多3个RTT;
- 对免费证书的 OCSP server 做跨境优化;
- 优化前后最多可相差 4次RTT。
RTT 优化篇 · 完