什么是延迟?
延迟是从发起请求到收到响应之间的时间差,通常以毫秒(ms)计量。在网络和 DNS 场景中,延迟表示数据从客户端传到服务器再返回的往返时间。低延迟对快速加载网站、响应灵敏的应用和良好用户体验至关重要;高延迟会造成明显等待,令用户不满,也可能影响业务指标。延迟的类型
网络延迟
数据包穿过网络所需的时间:
- 客户端与服务器之间的物理距离
- 网络跃点数量(路由器、交换机)
- 网络拥塞和带宽限制
- 网络基础设施质量
DNS 延迟
将域名解析为 IP 地址所需的时间:
- DNS 服务器响应时间
- 缓存状态(命中或未命中)
- DNS 查询链(递归解析器 → 权威解析器)
- DNSSEC 验证开销
应用延迟
应用处理请求所需的时间:
- 数据库查询执行
- 服务器端处理
- API 响应生成
- 后端服务通信
测量延迟
常见工具
# Ping test (ICMP latency)
ping example.com
# DNS resolution time
dig example.com | grep "Query time"
# HTTP timing
curl -w "@curl-format.txt" -o /dev/null -s https://example.com
关键指标
| 指标 | 说明 | 良好目标 |
|---|---|---|
| RTT(往返时间) | 完整的请求-响应周期 | <100ms |
| TTFB(首字节时间) | 开始接收服务器响应的时间 | <200ms |
| DNS 解析 | 域名到 IP 的查询 | <50ms |
| 连接时间 | TCP 握手完成时间 | <100ms |
不同地区的延迟影响
地理距离会直接影响延迟:
| 路径 | 典型延迟 |
|---|---|
| 同一城市 | 1-10ms |
| 同一国家 | 20-50ms |
| 同一大洲 | 50-100ms |
| 跨洲 | 100-200ms |
| 全球两端 | 200-300ms |
降低 DNS 延迟
任播 DNS(Anycast DNS)
在全球部署 DNS 服务器,将查询路由到最近的服务器:
- 多台服务器共享同一 IP 地址
- 自动路由到最近位置
- 内置冗余
DNS 缓存
利用 TTL 减少重复查询:
example.com. 300 IN A 192.0.2.1
↑ TTL in seconds
- 浏览器缓存(数秒至数分钟)
- 操作系统缓存
- ISP 递归解析器缓存
EDNS 客户端子网(EDNS Client Subnet)
启用基于地理位置的响应:
- 将客户端位置传给权威服务器
- 返回最近的服务器 IP
- 改善 CDN 性能
降低整体延迟
内容分发网络(CDN)
- 在边缘位置缓存内容
- 从附近服务器为用户提供服务
- 减少源站负载
连接优化
- HTTP/2 多路复用
- Keep-alive 连接
- TLS 会话恢复
- 使用 HTTP/3(QUIC)减少握手开销
基础设施选择
- 使用多个数据中心位置
- 选择优质网络服务商
- 优化路由路径
- 用边缘计算处理动态内容
延迟与带宽的区别
理解二者的差异:
- 延迟:数据开始到达的速度,也就是等待时间
- 带宽:每秒可以传输的数据量,也就是吞吐量
二者都会影响性能,但对交互式应用而言,延迟通常更直接影响用户感知的速度。
低延迟是现代 Web 性能的基础,会直接影响用户满意度、转化率和搜索引擎排名。