「首页还能开,点进详情页要等好几秒。」网站加载速度慢怎么办解决方法,先别改页面,先看是哪一步慢。

一次请求分成五段:dns、tcp、tls、ttfb、下载。哪段最长,就改哪一段,别的先别碰。一次改三处,最后说不清。

用户说「慢」,先问是哪一步慢

五段里前四段发生在拿到内容之前,最后一段在拿内容。

用户说「白屏很久」和说「出来了但一直转」,指向不同的段。

这两句话要先分开。

先跑一条命令,把五个数拿出来:

`` curl -o /dev/null -s -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://你的域名 ``

五个数是累计值,段耗时要相减。这一步做完,讨论才有共同语言。

前三段长的,改的是入口不是页面

dns、tcp、tls 都发生在请求到达服务器之前。

dns 长:同一时刻问两家解析,一家有、一家没有,就是被拦。补一条就够。

tcp 长:按地区分组,只有几个省慢,是那条链路的事。

tls 长:数证书张数,只发一张就是缺中间证书。

这三段长的时候,改页面、压缩图片都没用。方向错了。

要分局部还是全局,用宝塔拨测的网站测速跑多地区节点,分组一开就看得清。

首字节长的,改的是缓存和接口

这一段是服务端在算。

先看缓存:同一页面连开两次,第二次明显短,说明缓存有效,问题在首次生成。

再看接口:把页面拆成几个请求分别测,只改最长那一个。

改一处测一次,别同时动数据库和模板。

下载段长的,改的是请求数和体积

前四段都短、只有下载长,问题在页面自己。

先减请求数:合并能合并的、去掉不用的、把 404 的重试停掉。

这三件最省事。

再压体积:图片、字体、脚本,按体积从大到小排。

顺序别反,先数量后体积,收益更稳。反过来做,往往白忙。

五段都不长,问题在浏览器里

五段加起来一秒、体感五秒(举例),差的几秒在排版和执行脚本。

去网络面板看瀑布:哪个资源在排队、哪个脚本阻塞了解析。

两边对不上时,以体感为准查前端,别拿测速报告反驳用户。

用户不关心你测了多少毫秒。

有一点我没确认:首字节段里含不含服务端排队等待,不同工具口径不一,我手上没有逐工具对照,只能在同一款工具里比前后。