网页加载慢原因
「页面明明能打开,就是慢,到底慢在哪一步?」
网页加载慢原因,先别急着换服务器。一次打开拆成五段,最长的那一段就指向那一层。下面这张表是先分叉用的,三支都在表里。
| 最长的一段 | 指向哪一层 | 先做什么 |
|---|---|---|
| dns、tcp、tls(之一最长,或合计过半) | 连接还没建立 | 换解析、换节点、查证书链 |
| ttfb | 服务端在算 | 看进程、数据库、外部接口 |
| 下载 | 数据在传 | 看体积、请求数、线路丢包 |
三段都慢或某一段卡住,是连接没建立起来
<figure><img src="https://image.bt.cn/20261113/b48097e4193570db7145dd38a98a3d36.svg" alt="一次打开拆成 dns、tcp、tls、ttfb、下载,各占多少" loading="lazy" width="1200" /><figcaption>先看谁最长,再看它占几成</figcaption></figure>
dns 慢是问路慢,tcp 慢是握手慢,tls 慢是协商慢。这三段走完,还没有一个字节的业务请求发出去。
先看单段:哪一段最长就先看它。三段之一最长、或者三段合计占总耗时一半以上,就先动这三段,后面的先别看。一半是经验线。
dns 慢,换一家解析再跑。tcp 慢,换一个节点或一条线路。tls 慢,先看证书链是否完整、有没有多余跳转。
有一点容易算错:测速端自己解不出或自己超时,也会显示成 dns 段慢。这一路跟站点无关,换一台机器复测就能排除。
ttfb 长,是请求到了、服务器还没回话
ttfb 从请求发完算到收到第一个字节。这一段长,说明连接已经建立,是后端没在时限内给出响应。
判据是 ttfb 超过一秒,同时下载段很短。一秒是经验线。两条同时成立,再去翻进程、慢查询、外部接口。
反过来,ttfb 很短、总时长还是长,就不该在后端上找。
用宝塔拨测的网站测速跑一次,五段耗时是分开列的,先看最长那一段,再看它占几成。
下载段长,是已经开始传、但传得慢
下载段从第一个字节算到最后一个字节。这一段长,说明数据在动,是体积或带宽的事。
判据是下载段占一半以上、ttfb 正常。一半也是经验线。两条同时成立,先看页面总字节数和单个最大文件。
字节数不大还慢,再数请求数。请求太多,前面几段要各走一遍。
有一处我还没确认:同一份报告里,五段之和与总耗时差的那一点,各家算不算在「其他」里,写法不一样。我手上没有统一定义,所以对不上时,我会以最长那一段的占比为准。