在时间和人手有限的情况下,安排图片与资源加载的核心原则是:先处理“阻塞首屏渲染、体积又大”的资源,再处理“延迟加载也不影响阅读”的资源。判断依据不是图片总数,而是每个资源对首次可见内容的影响程度。如果一张首屏大图或一个同步脚本拖慢了打开速度,它就应该排在所有装饰性图片和次要脚本前面。
把页面资源按影响程度分成三类,可以避免在无关紧要的优化上耗时间:
对多数内容型页面,先解决阻塞类,往往比批量压缩全站图片更快见效。如果首屏只有文字和一张主图,那么主图的格式与尺寸就是第一优先项。
图片通常是页面体积的主要来源。按以下顺序检查,前一项没做好时,后一项的收益会大打折扣:
loading="lazy",首屏图片不要加,否则可能拖慢首屏显示。假设一个页面首屏有一张 1.5MB 的横幅图,首屏以下有 20 张小图。此时先压缩横幅图,收益远大于处理那 20 张小图。反过来,如果首屏只有文字,那么首屏以下图片的延迟加载就是更划算的起点。
资源不只有图片。脚本和字体的处理方式不同,判断标准是它是否阻塞页面显示:
defer 或放到页面底部,具体效果需要实际测试确认。这里要区分“可能原因”和“已经定位的原因”。页面变慢可能是图片、脚本、字体或服务器响应中的任何一项,不要在没有测量的情况下断定是某一个资源造成的。
不测量就优化,容易把时间花在影响很小的资源上。可以按这个步骤执行:
适用条件是:你能在本地或测试环境复现页面加载。如果只能改线上,建议先处理最明确的问题,例如未压缩的首屏大图。判断结果是:如果最大资源在首屏之后才加载,那它就不是当前最紧急的优化对象。
人手不足时,不要追求一次优化全部资源。可以按“首屏可见内容优先、体积大的优先、改动成本低的优先”三条同时衡量。一个改动小、影响首屏的调整,通常比一个需要重构构建流程的优化更值得先做。完成第一轮后,再根据测量结果决定是否继续处理次要资源。
下一步:打开你要优化的那个页面,用开发者工具记录一次加载过程,列出体积最大的三个资源和首屏出现前加载的资源,从中选出一个今天就能改完的项开始处理。