网页游戏的延迟从哪来

DNS 解析、连接建立、TLS 握手、首字节、渲染,逐段拆解延迟构成。

"网速慢"是一个笼统的说法。实际使用中感受到的延迟,由多个互相独立的环节叠加而成,每个环节的耗时差别很大。理解这些环节,才能判断问题出在哪一段。

一次请求走过的环节

从点击到看到结果,大致经过以下几个阶段:

  1. DNS 解析:把域名翻译成 IP 地址。如果本地没有缓存,需要向递归服务器查询,通常 20 至 100 毫秒;缓存命中时接近 0。
  2. TCP 握手:与服务器建立连接。同城通常 10 至 30 毫秒,跨国可能 150 毫秒以上。
  3. TLS 握手:HTTPS 加密协商。完整握手需要 1 至 2 个往返,即额外的 2 至 4 倍单程延迟,在跨国链路上可能达到数百毫秒。
  4. 请求发送与首字节:服务端处理请求并返回第一个字节的时间(TTFB)。这一段的耗时取决于服务端逻辑复杂度,与网络关系不大。
  5. 内容传输:把响应内容完整传回。受带宽和内容大小影响。
  6. 解析与渲染:浏览器解析 HTML、加载资源、执行脚本、绘制界面。这一段完全是本地计算,但复杂页面的耗时可能超过网络部分。

把这几段加起来的"总延迟",才是用户实际感受到的等待时间。其中DNS、握手、TLS 三段在首次访问时全部要付,第二次访问时大部分可以省掉——这就是为什么同一个网页第二次打开明显更快。

哪些环节影响最大

在典型的移动网络环境下,各环节的量级估算:

环节同城/同省跨国可否优化
DNS 解析10-30 ms50-200 ms缓存、更换 DNS
TCP 握手10-30 ms150-300 ms连接复用
TLS 握手20-60 ms300-600 ms会话复用、TLS 1.3
服务端处理20-200 ms同左服务端优化
资源传输视大小视大小压缩、CDN

可以看出,跨国链路上握手环节的代价极高。这也是 CDN 存在的核心原因:把内容缓存到离用户更近的节点,让握手发生在近距离链路上,而不是跨越整个国际链路。

如何定位问题

如果感觉"卡",可以按以下顺序排查:

  • 先测 DNS:如果换一个网络环境(比如从 Wi-Fi 切到移动数据)后明显变快,问题可能出在 DNS 或本地网络。
  • 看是否首次访问才慢:如果只有第一次慢、刷新后正常,说明瓶颈在握手或资源加载,不是持续性的网络问题。
  • 对比其他站点:如果只有某个站点慢、其他站点正常,问题在服务端或该站点的链路,不在本地网络。
  • 检查是否在加载大资源:开发者工具的网络面板可以看到每个资源的耗时和大小,通常能直接看出是哪个文件拖慢了整体。

很多"网络慢"的抱怨,实际原因是大图未压缩、脚本阻塞渲染、或者第三方统计脚本超时。这些都不是网络问题,但表现完全相同。

常见疑问

问:为什么测速软件显示很快,网页还是很慢?

答:测速软件测的是本地到测速节点的带宽,而网页加载速度取决于到目标服务器的往返延迟、丢包率、以及页面本身的复杂度。带宽高但延迟高的情况很常见,尤其在跨运营商访问时。

问:换 DNS 有用吗?

答:只对"DNS 解析慢"这一类问题有用。如果瓶颈在握手或服务端处理,换 DNS 没有效果。而且首次解析之后 DNS 结果会被缓存,影响会持续一段时间。

问:为什么晚上特别慢?

答:晚间是网络使用高峰,运营商出口与国际链路拥塞程度上升,丢包率提高。丢包会触发重传,而重传的代价在长链路上被放大,所以体感下降会比带宽下降更明显。

进入体验入口

浏览器直接打开,无需下载安装