安排图片与资源加载的核心思路是:先判断哪些资源属于首屏必需,哪些可以延后;再决定用压缩、尺寸适配、懒加载还是预加载来处理。没有一套固定配置适合所有页面,选择依据是资源体积、出现位置和用户是否马上需要看到它。如果页面出现加载慢、图片跳位或滚动卡顿,应先收集证据,再逐项调整。
首屏指用户不滚动就能看到的区域,通常包括主图、Logo、导航和关键按钮。这些资源应优先加载,并尽量控制体积。非首屏资源包括向下滚动才出现的图片、评论区头像、页脚图标等,可以等用户接近时再加载。
<link rel="preload"> 提前请求。loading="lazy" 或脚本懒加载,避免一开始就占用带宽。判断标准很简单:关掉缓存、用普通网络打开页面,看首屏是否在合理时间内完整出现。如果首屏主图迟迟不显示,而页脚图片先加载,说明优先级安排反了。
图片加载慢最常见的原因不是格式,而是尺寸过大。一张 3000 像素宽的图显示在 300 像素宽的容器里,浏览器仍要下载完整文件。安排加载前,先确认图片在页面上的实际显示宽度,再准备对应尺寸的版本。
srcset 和 sizes 让不同屏幕取不同版本。适用条件是图片内容复杂、色彩丰富时,压缩收益更明显;如果是简单图标或纯色图形,用 SVG 往往比位图更合适。判断结果是:在视觉可接受的前提下,文件越小、请求越少,加载越轻。
这三种手段解决的是不同问题,不能互相替代。懒加载减少初始请求,预加载提前请求关键资源,占位则避免图片加载完成后页面跳动。
如果页面滚动时图片突然弹出、文字被顶开,优先检查是否缺少宽高或占位。如果首屏图总是最后才出现,检查是否被懒加载误伤,或预加载没有覆盖到它。
出现加载问题时,不要凭感觉改代码。打开浏览器开发者工具的 Network 面板,刷新页面,按资源大小和加载时间排序,记录以下信息:
可能原因包括:图片未压缩、尺寸过大、懒加载范围设置过宽、预加载缺失、服务器响应慢。已经定位的原因则要看具体证据,例如某张图请求耗时明显高于其他资源,就针对它处理,而不是全站一起改。
按下面顺序做决策,可以避免一次改太多导致无法判断效果:
这套顺序适合大多数内容型页面。如果页面本身以图片浏览为主,例如相册或商品列表,懒加载的触发距离需要更保守,避免用户快速滚动时看到空白。如果页面是单页应用,还要确认路由切换时旧图片是否被正确释放。
下一步:打开开发者工具的 Network 面板,刷新一次目标页面,把体积最大的五个资源和加载最晚的五个资源记下来,再对照上面的顺序逐项处理。