页面性能优化中的内容更新顺序,结论是:先改影响首屏渲染与主要交互的阻塞资源,再改加载时机与资源体积,最后处理长尾资源与缓存细节。这个顺序不是按文件类型排列,而是按用户可感知的等待时间排列。前提是你已经能测量页面在目标设备上的加载表现,否则顺序只能靠猜。
面对一个性能问题,通常有两种处理方案:一种是直接减少资源本身,比如删掉未使用的样式、压缩图片、拆分过大的脚本;另一种是调整资源的加载与执行时机,比如延迟加载、异步加载、预连接、调整请求优先级。两者都能改善页面性能优化效果,但适用条件不同。
如果两种方案都能选,优先选减少资源,因为它同时降低带宽、解析和执行成本;调整时机只是把成本挪到后面,总量不变。
具体做法可以按下面四步执行,每一步都有对应的验收信号。
这个顺序的核心理由是:首屏渲染和主线程阻塞直接决定用户是否愿意继续等待,收益最大;图片和缓存虽然也重要,但通常不会单独造成页面长时间空白。
如果出现以下情况,可以调整上面的顺序:首屏内容已经很快,但页面滚动时明显卡顿,说明主线程问题更突出,应把脚本处理提前;如果首屏空白时间主要来自一张大图,说明图片处理应提前;如果页面在重复访问时仍然很慢,说明缓存问题更值得优先处理。
判断依据不是感觉,而是同一设备、同一网络条件下前后对比。每次只改一类,记录首屏出现时间、可交互时间和布局偏移情况。如果改完没有变化,说明该类不是当前瓶颈,应回到测量结果重新排序。
技术示例中,若要把脚本改为延迟执行,可以在文字说明里写 <script defer>,但实际改动要结合页面结构确认依赖顺序,避免延迟后出现未定义错误。
先选一个访问量最高的页面,用浏览器开发者工具记录一次完整加载,标出首屏出现前请求了哪些资源、哪些脚本在解析阶段执行。然后按本文顺序只改第一项,改完再测一次。如果首屏时间没有改善,就换下一项,而不是同时改多项。这样你得到的是一个可复用的更新顺序,而不是一次碰运气的调整。