图片与资源加载安排的核心,是让首屏需要的图片尽早出现、让非首屏资源延后,同时保证布局不跳动。具体做法是先观察页面加载时哪些资源阻塞渲染,再判断哪些图片属于首屏、哪些可以延迟,然后通过尺寸声明、格式选择和加载时机调整,最后用浏览器工具复查效果。
打开浏览器的开发者工具,切到网络面板,刷新页面,按加载时间排序。重点看三类信息:
这一步只收集证据,不下结论。体积大不等于一定慢,如果它在首屏之外,影响可能有限;体积小也不等于没问题,如果它阻塞了首屏渲染,照样拖慢感知速度。
把页面上的图片按位置分类。首屏图片指用户不滚动就能看到的图,通常包括顶部横幅、首屏产品图或头图。这类图片应当优先加载,并明确写出宽高。非首屏图片指需要滚动后才出现的图,包括中部配图、底部图标、相册缩略图,这类适合延迟加载。
判断依据是用户的实际视口,而不是设计稿的绝对位置。同一个页面在手机和桌面端首屏范围不同,所以分类要按主要访问设备的视口来定。如果不确定,可以先按最窄的常见手机视口划分。
第一项可执行操作是给每张图片加上明确的宽度和高度属性,或者用CSS的宽高比占位。这样浏览器在图片下载完成前就能预留空间,避免内容跳动。
第二项是选择合适格式。照片类图片优先用WebP或AVIF这类压缩效率较高的格式;图标和简单图形用SVG;确需兼容旧环境时再保留JPEG或PNG作为回退。格式选择要结合实际压缩效果,不能只看格式名称。
第三项是控制加载时机。首屏图片正常加载,非首屏图片使用延迟加载。原生延迟加载可以写成:
<img src="photo.webp" width="800" height="600" loading="lazy" alt="示例图片">
首屏那张最重要的图片不要加延迟加载,反而可以给它较高的加载优先级。同时注意,延迟加载只解决“什么时候下载”,不解决“下载多大”,所以尺寸压缩和格式优化要一起做。
对于非图片资源,比如字体、脚本和样式,原则类似:首屏渲染必需的内联或优先加载,其余延后。字体可以用字体显示策略避免文字长时间不可见,脚本尽量放在不影响首屏的位置。
改完后回到开发者工具,重新记录几项可对比的指标:
复查要在相同网络条件下进行,否则前后数据没有可比性。如果首屏变快但布局跳动增加,说明尺寸占位没做好;如果体积下降但首屏没变快,说明瓶颈可能不在图片,而在脚本或服务器响应。
上述安排适用于以内容展示为主的网站,包括企业站、作品展示站和图文资讯页。如果页面是强交互应用,资源加载策略需要结合具体框架的路由和代码分割来定,不能照搬图片延迟加载的思路。
常见误判有三种。一是把延迟加载加到首屏图片上,导致首屏反而变慢;二是只压缩图片却不写尺寸,跳动依旧;三是看到总体体积下降就认为体验变好,忽略了首屏关键资源是否提前。判断改动是否有效,要看首屏指标和布局稳定性,而不是只看总下载量。
下一步,选一个真实页面,用开发者工具记录改动前的首屏加载时间和布局偏移情况,再按上面的顺序调整一张首屏图和两张非首屏图,用相同条件复测一次,对比数据后再决定是否推广到全站。