图片与资源加载安排的核心是:先确认当前瓶颈在下载体积、请求数量还是渲染时机,再按“首屏优先、非首屏延后、尺寸匹配、缓存可控”的顺序逐项处理。对已有页面,不要一次性重做全部资源,而应先测一版基线,改一类资源,再对比复查,确认没有把首屏拖慢。
打开浏览器开发者工具的“网络”面板,刷新页面并勾选禁用缓存,按大小排序看资源列表。重点记录四项:首屏最大图片的字节数、图片请求总数、脚本与样式是否阻塞渲染、是否存在明显重复加载。如果一张首屏大图占了几百KB以上,问题多半在体积;如果请求数很多但单个体积不大,问题可能在小图标、字体或第三方脚本的请求开销。
这里要区分“可能原因”和“已经定位的原因”。图片大是可能原因,只有在网络面板里看到它确实排在首屏关键路径上,才算定位。不要因为页面慢就断定是图片造成的。
把资源分成三类,处理方式不同:
判断标准是“用户不滚动时能否看到”。能看到的进入关键组,看不到的进入延后组。这个划分比按文件类型划分更贴近实际体验。
loading="lazy",但首屏主图不要加,否则可能拖慢首屏呈现。示例(假设):某页面首屏主图为1200×600像素,原文件800KB。改为按显示宽度输出并压缩后为180KB,首屏之外的三张配图加懒加载。复查时首屏最大内容绘制时间应下降,若没有下降,说明瓶颈可能不在图片,而在脚本执行或服务器响应。
再次打开网络面板,对比修改前后的资源总字节数、请求数和首屏关键资源完成时间。同时用性能面板看首屏最大内容绘制和布局偏移。判断结果分三种:
复查要在相同网络条件下进行,否则对比没有意义。移动端网络和桌面宽带的结果可能完全不同,至少各测一次。
上述安排适用于已有页面、希望在原基础上改进的情况。如果页面本身结构简单、资源很少,收益可能有限,不必强行引入复杂构建流程。常见误区有三个:一是把所有图片都懒加载,包括首屏图;二是只压缩图片却保留超大显示尺寸;三是给静态资源设置了长缓存却没有版本更新机制,导致用户长期看到旧文件。
下一步:选当前页面首屏最大的一张图片,按显示尺寸重新输出并压缩,改完后用网络面板对比字节数与首屏完成时间,确认有效再处理下一张。