网站加载慢怎么优化设置
网站加载慢怎么优化设置?先别急着改配置。
网上的优化清单大多是「开缓存、压图片、上 cdn」。这些改的是某一段,改错段等于没改。
先跑一条命令,把五段分开:
`` curl -o /dev/null -s -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://你的域名 ``
跑两次,取第二次的值。第一次常有冷启动。
| 哪一段最长 | 这一段是什么 | 先动哪里 |
|---|---|---|
dns | 域名换成 IP | 递归服务器 |
conn 减 dns | 建立连接 | 线路与机房 |
tls 减 conn | 加密握手 | 证书链与协议 |
ttfb 减 tls | 等后端首个字节 | 程序与数据库 |
total 减 ttfb | 收内容 | 体积与请求数 |
解析段长:本地递归离得远
dns 接近 total,后面几段都很短。
这时候改程序、压图片都没用。
换一家 DNS 再跑一次,看这个数降不降。
不降,说明慢在权威那一侧,本地换谁都没用。
连接段长:出境链路与路由
conn 减 dns 最大,说明握手前的这段最慢。
这一段跟服务器位置、线路质量有关。
换一台同城机器测一次,两台都慢才叫线路问题。
只有一台慢,先看它自己的出口。
握手段长:证书链与握手次数
tls 减 conn 最大,握手这一段在拖。
先看证书链是不是完整,中间证书缺一环就多一次往返。
再开 http/2,同样内容少开连接。
两个都做完再测一次,这一段该明显变短。
用宝塔拨测的网站测速跑一轮多地区,各地都卡在握手上,那就是证书链本身的事,不是线路。
首字节段长:后端在慢慢处理
ttfb 减 tls 最大,请求已经到站点了,就是不回话。
这一段跟网络无关,改线路改不动它。
先看有没有慢查询,再看有没有在程序里等外部接口。
程序里同步调外部接口,是这一段最常见的拖法。
下载段长:体积与请求数
total 减 ttfb 最大,前面都很快,就是内容收不完。
先看总量,再看请求数。两个数一个在总大小,一个在条数。
图片压一遍、合并小文件、给静态资源开长缓存,三样见效最快。
各地下载段都长,先压体积;各地都短,那就不是体积的事。
各段都不长、页面还是慢:看渲染与第三方
五个数都正常,用户还说慢,那是页面出来之后的事。
浏览器按 F12 看性能面板,注意首屏时间与阻塞渲染的资源。
第三方统计、客服、广告脚本,常是最后拖住首屏的那一段。
关掉第三方再测一次,能分成两种:关了就快,是它们的事;关了还慢,回去重看首字节那一段。
只有一个地区慢:看线路与调度
其他地区正常,只有这里慢,先别改服务器。
先在这个地区换一家运营商网络试一次。
换了就正常,是那家运营商到你这台机器的路。
换了还慢,再看是不是这一片的节点调度问题。
有一个我还没弄清:同一台机器连测两次,第二次常常明显更快,连接复用到底省了多少,我没实测过,所以我一律只看第二次的值。