老网站慢,通常已经做过一轮优化:图片压了、缓存加了、CDN 上了,还是快不起来。这说明瓶颈在结构里,只有改版才能动。
先测清楚慢在哪
改版前记录一份性能基线,后面好对比:
首页总请求数:首页总体积:4G 网络首屏时间:LCP / CLS / INP:手机端 Lighthouse 分数:重点看两个东西:请求数量和主线程阻塞时间。老站常见的是请求一百多个、脚本执行好几秒,这些靠压缩图片解决不了。
资源策略:少发请求
改版时可以重做的:
- 合并与按需加载:不是所有页面都要加载全站样式,按页面拆分
- 图标用 SVG 雪碧图或内联:几十个小图标各发一次请求很浪费
- 字体精简:中文字体只保留用到的字,或者用系统字体
- 开启 HTTP/2 或 HTTP/3:多路复用下请求数的影响会小很多
- 启用压缩:文本资源开启 Gzip 或 Brotli
渲染方式的选择
这是架构层面的决定,改版才有机会调整:
- 静态生成:内容变动不频繁的页面预先生成 HTML,速度最快
- 服务端渲染:每次请求时拼装,兼顾动态性和首屏
- 客户端渲染:交互体验好,但首屏依赖 JavaScript,企业站要谨慎
对以搜索流量为主的企业站,前两种明显更合适。第三种要么不用,要么配上预渲染。
缓存设计
- 静态资源带哈希文件名,设置超长缓存时间
- 页面本身短缓存,或者用CDN边缘缓存
- 接口数据按需缓存,减少数据库压力
- 合理设置协商缓存,避免每次全量下载
第三方脚本治理
老站上往往积累了大量外部脚本,改版是清理的好机会:
- 逐个盘点:这个脚本还在用吗?有人看它的数据吗?
- 能删就删:一年没打开过的统计后台,对应的代码可以去掉
- 延后加载:客服、地图、社交插件延迟到页面加载完成后再执行
- 合并同类:别同时装三套统计工具
这一步的效果常常超出预期。有个客户删掉五个没用的脚本后,首页加载时间直接少了两秒。
数据库与后端
页面慢有时是后端的问题:
- 慢查询优化:加索引、减少联表
- 热点数据缓存:首页的数据不必每次查库
- 减少重定向链:A 跳 B 再跳 C,每次跳转都是一次往返
定一条性能预算
改版时给团队定个硬指标,写进验收标准:
首页总体积 ≤ 1.5MB请求数 ≤ 50手机 4G 首屏 ≤ 3 秒LCP ≤ 2.5 秒CLS ≤ 0.1有了预算,开发中每加一个大图或一个库都会有人犹豫一下。没有预算的话,性能会一路劣化到上线才发现。
上线后守住
改版后三个月再测一次,和基线对比。同时把"上传图片必须压缩""新增第三方脚本要评估"写进日常规范,否则一年后又会回到从前。
性能是设计出来的,不是优化出来的。改版是唯一能重新设计它的机会。
—— 一位专门做性能优化的工程师