安排图片与资源加载的核心做法是:先按“首屏可见、交互必需、次要装饰”把资源分成三档,让首屏关键图片和必要样式尽早加载,让折叠线以下的图片、非关键脚本和装饰性素材延后加载。对已有页面,最有效的一步不是压缩所有图片,而是先找出首屏真正需要的那几张,把其余图片从初始加载路径中移出去。
打开一个已有页面,在浏览器开发者工具的“网络”面板刷新一次,按体积和加载时间排序,把资源分成三档:
判断依据是“不加载它,首屏会不会缺内容或不能操作”。如果不会,就先归入可延后档。这一步决定了后面所有改动的顺序,比单纯调参数更重要。
关键图片保留在初始HTML中,但应显式写明尺寸,避免布局在图片到达后跳动:
<img src="hero.webp" width="1200" height="600" alt="首屏主图">
折叠线以下的图片,把真实地址放进 data-src,等滚动接近时再赋值给 src:
<img data-src="detail.webp" width="800" height="500" alt="细节图">
现代浏览器原生支持懒加载,也可以只加 loading="lazy",让浏览器自行决定时机。图片格式优先选WebP或AVIF,并准备JPEG或PNG作为回退。脚本方面,非关键脚本加 defer 或 async,样式表只保留首屏需要的部分,其余样式拆分后延后引入。
最关键的一步是:不要一次性把所有图片都改成懒加载。首屏主图如果被延后,会出现空白或闪烁,反而伤害体验。只把首屏之外的资源移出初始加载路径,才是正确做法。
改完后重新刷新,检查以下几项:
如果首屏图片被延后导致空白,说明分档判断有误,应把它移回关键档。如果滚动后图片迟迟不出现,检查懒加载的触发距离是否设得太小。验证的标准是首屏先可用,而不是总请求数最少。
新增图片时,先按用途归入三档,再决定是否懒加载。上传前统一压缩到合理尺寸,避免把原图直接放进页面。定期复查网络面板,发现新出现的阻塞资源就及时调整。对已有项目,可以每次改版时只处理一个页面,确认稳定后再推广到其他页面。
下一步,选一个访问量较高、图片较多的页面,按上面的分档方法改一次,记录改动前后的首屏加载表现,再决定是否继续处理其他页面。