安排图片与资源加载的核心,是先把“首屏必须出现的内容”和“可以稍后出现的内容”分开,再决定用原生延迟加载、响应式图片,还是手工控制加载顺序。两种常见方案——浏览器原生懒加载加srcset,与脚本控制的懒加载加占位图——各有适用条件,选错会拖慢首屏或造成布局跳动。最关键的一步是先量出首屏真实需要的图片数量,再动手改代码,而不是先装插件。
在动手前,用浏览器开发者工具的Network面板刷新页面,看首屏渲染完成时实际请求了哪些图片。判断标准很简单:不滚动页面就能看到的图,属于首屏资源;需要滚动才出现的图,属于延迟加载对象。
这一步的产出是一张清单:哪些图必须早到,哪些可以晚到。没有这张清单,后面选方案就是凭感觉。
方案一,原生懒加载加响应式图片。给非首屏图片加loading="lazy",同时用srcset和sizes让浏览器按屏幕宽度选择合适尺寸。适用条件:页面图片数量中等、结构规整、不需要复杂占位动画。优点是实现简单、不依赖额外脚本;局限是老版本浏览器可能忽略懒加载属性,图片会照常加载,但不会出错。
方案二,脚本控制的懒加载加占位图。用IntersectionObserver监听图片进入视口,再替换真实地址,同时先用低分辨率占位图或纯色块占住位置。适用条件:图片量大、需要统一控制加载节奏、或需要配合动画效果。代价是要自己处理占位尺寸,否则容易出现布局偏移。
两种方案可以混用:首屏图片直接加载,首屏以下用原生懒加载,特殊长列表再用脚本控制。判断依据是首屏请求数量和布局稳定性,而不是哪种方案“更高级”。
改完后要验证三件事,缺一项都不算完成。
如果发现首屏图片被延迟,检查是不是给所有<img>统一加了懒加载属性;如果发现滚动后大片空白,检查占位容器是否设置了明确的宽高比。
每次新增页面或替换主图后,都要重新确认首屏清单是否变化。常见退化情况包括:运营在首屏轮播里加了新图却沿用了懒加载模板;图片被替换成更大尺寸但没有更新srcset。维护动作可以固定为:新增图片时先问它属于首屏还是首屏以下,再决定加载方式。这样比定期全站排查更省力,也更不容易漏。
下一步,打开你要处理的页面,用开发者工具记录一次首屏加载的图片请求列表,标出其中哪些其实可以延后。这张列表就是你调整加载安排的起点。