如何提升网页加载速度和性能
如何提升网页加载速度和性能,先记住一个数:五段。dns、tcp、tls、ttfb、下载,一段对应一种改法。
| 段 | 能改什么 | 改完看什么 |
|---|---|---|
| dns | 解析商、ttl | 解析段是否变短 |
| 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 能改解析商与 ttl,改完看解析段有没有降。
tcp 能改线路与节点,改完按地区分组看是否还慢。
用宝塔拨测的网站测速跑同一批节点,分组一开就看得清。
tls 能改证书链与协议版本,先数证书张数,一张就是缺中间证书。
这三段改代码没有用。改的是入口,不是程序。
首字节能改的是缓存与接口
这一段是服务器在处理,改法最多。
先开缓存:静态资源、页面片段、接口结果,三层各看一次。
哪一层没开,先补哪一层。
再拆接口:把页面拆成几个请求分别测,只改最长那一个。
改完一处测一次,别同时动数据库和模板。
同时动两处,说不清是谁起的作用。
下载段能改的是请求数与体积
这一段跟服务器无关,改的是页面自己。
先减请求数:合并能合并的、去掉不用的、把 404 的重试停掉。
再压体积:图片、字体、脚本,按体积从大到小排。
顺序别反,先减数量再压体积,收益更稳。
反过来做,往往白忙。
改前改后各看一次分组结果,比只看总分可靠。
改完必须同组对照,否则等于没改
同一组节点、同一时段、同一条 url,改前改后各测三次。
三次都降,才算改对;只降一次,先记着。
同时改两处,下一次测速说明不了是谁起的作用。这一点最常被忽略。
我现在的取舍是:一段一段改,每段都要有自己的对照,宁可慢一点,也不要一次全上。