网站加载速度优化步骤:按五段排序,别从图片开始
优化的顺序应该由测出来的数字决定,不由你熟悉什么决定。大多数人一上来就压缩图片,结果真正慢的是解析和握手,压了也没有变化。
所以先把五段打出来:
`` curl -o /dev/null -s -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://你的域名 ``
五个数是累计值,段耗时要相减。减完最长的那段,才是第一件要动的事。
优化从最便宜的那一段开始,不是从最熟的那一段开始
便宜指的是改动小、可回滚、不影响别人。
排序大概是:先查不改(看数字、比对结果),再改配置(TTL、缓存头、证书链),最后才动代码和机器。
跳过前两档直接上代码,最常见的结局是改完没变快,还多了一个变量。
解析段能做的只有三件事
查记录对不对、查 TTL 设多长、查两家 DNS 结果是否一致。
`` dig @223.5.5.5 你的域名 A +short dig @8.8.8.8 你的域名 A +short ``
两家一致、解析段仍长,就不要在这里继续投入,去下一段。
解析段长的时候换服务器、加带宽,都是白做。
连接段能改的是线路和入口,不是代码
连接段长,说明握手前的路不好走。
先按地区分组看是不是局部:只有几个省慢,去找接入商核对,改代码没用。
全国都慢,再考虑换机房、上 CDN、调入口线路。
这一步之前,先用宝塔拨测的网站测速跑多地区多运营商节点,把慢的地区和运营商列出来,别凭印象动手。
握手段先看证书链,再谈协议版本
握手段长,最常见的两个原因:证书链不完整、中间设备拦了某些协议。
先看证书张数:
`` echo | openssl s_client -connect 你的域名:443 -servername 你的域名 -showcerts 2>/dev/null | grep -c "BEGIN CERTIFICATE" ``
返回 1 张,先把中间证书补上再测。
返回 2 张以上、握手仍然长,才轮到试协议版本和加密套件。
首字节段只能一处一处改
这一段是服务端在算,改法最多,也最容易一起上。
先看缓存命中:同一页面连开两次,第二次首字节明显短,说明缓存有效,问题在首次生成。
再看接口:把页面拆成几个请求分别测,只改最长的那一个。
数据库慢查询、外部接口串行、模板渲染,都可能落在这段,但改法不同,必须拆开。
下载段先减数量,再考虑压缩与带宽
顺序别反:先看有多少个请求,再看单个体积。
合并能从源头减掉的资源,再谈压缩,最后才考虑带宽和并发。
前四段都短、只有下载段长,这类不需要碰服务器。
改完必须有对照,否则等于没改
同一组节点、同一时段、连测三次,改前改后各一次。
只动一处,否则说不清是谁起的作用。
三次都降才算改对;一次降一次升,先记下来,别写进汇报。
反过来,如果你只在办公室测了一次,看到数字变好就宣布优化完成——那台机器的网络、缓存、时段全都可能变了,这个结论站不住。