安排图片与资源加载的核心,是把首屏必须出现的内容优先加载,把暂时看不到的图片和非关键脚本延后处理。做法不是把所有图片都压缩一遍,而是先判断哪些资源影响第一眼观感,再按“关键资源先到、非关键资源后到”的顺序调整加载时机。
打开一个页面时,浏览器需要先拿到HTML,再解析出CSS、图片、脚本等资源。首屏可见区域的图片、页面主样式、必要的字体,通常属于关键资源;折叠线以下的图片、轮播图后续帧、统计脚本、社交分享按钮,通常可以延后。
判断方法很直接:在浏览器开发者工具的“网络”面板中刷新页面,按时间排序,观察哪些请求阻塞了首次渲染。如果某个图片很大,但它在首屏之外,就不应该让它和首屏内容抢带宽。
loading="lazy"属性,或由脚本在图片接近视口时再设置真实地址。代价是快速滚动时可能出现短暂空白。srcset和sizes让浏览器选择合适文件,避免手机加载桌面大图。选择时比较两个条件:图片是否在首屏,以及用户是否会快速滚动到它。首屏图直接加载,首屏外且滚动距离较远的图延迟加载,同一图多端展示时用响应式图片。
普通<script>会阻塞HTML解析,放在<head>里可能让后面的图片迟迟得不到请求机会。可以给不依赖其他脚本的代码加defer,让它在文档解析完成后执行;给独立统计类脚本加async,让它不阻塞解析。
CSS方面,首屏需要的样式应正常加载;非首屏才用到的样式可以拆分或延后。注意不要为了追求加载顺序,把关键样式也改成异步,否则页面会先出现无样式内容,反而影响观感。
defer或async,确认功能不受影响。假设一个页面首屏有一张横幅图,下方有二十张商品图。把横幅图保持直接加载,商品图改为延迟加载后,首屏带宽更多留给横幅图,用户更快看到主要内容。这里的判断结果是首屏观感改善,而不是所有图片都变快。
检查时重点看三项:首屏最大图片的加载时间、页面布局是否因图片加载而明显跳动、延迟加载的图片在快速滚动时是否正常出现。如果延迟加载导致用户滚动后长时间空白,应缩小延迟触发距离或改回直接加载。
这套安排适用于内容型页面、商品列表和图文介绍页。对于图片本身就是核心交互的页面,例如在线修图工具,关键图片仍需优先加载,不能一律延迟。
下一步可以打开一个实际页面,在开发者工具中记录首屏图片的请求顺序,先调整一张首屏外的大图,再观察加载表现是否更符合预期。