图片与资源加载的安排,核心是让首屏先出来、非关键资源后加载、图片按实际显示尺寸提供。具体做法是:给首屏图片明确宽高并优先加载,其余图片延迟加载,压缩格式和尺寸,静态资源加缓存标识,脚本尽量延后或异步。做完后用浏览器开发者工具的网络面板核对,首屏请求少、图片不跳位、滚动时再加载后续图片,就说明安排基本到位。
打开一个页面时,浏览器要下载 HTML、样式、脚本、字体和图片。首屏指用户不滚动就能看到的部分,这部分图片和样式应当优先;折叠线以下的图片、轮播后面的图、弹窗里的图,都属于可以推迟的资源。
判断方法很直接:把浏览器窗口调成常见尺寸,看第一屏出现什么。假设一个图文案例页,顶部横幅、标题和第一张配图在首屏内,那么横幅和第一张配图优先,后面的步骤截图全部延迟加载。这是假设示例,不是某个真实项目的成果。
srcset 给不同屏幕提供不同宽度,或者直接导出合适尺寸。<img> 写上 width 和 height,或在外层容器用 CSS 固定宽高比。这样图片未加载完时不会把文字挤走,减少布局跳动。折叠线以下的图片可以加 loading="lazy",浏览器会在接近可视区域时才请求。首屏那张关键图片则相反,可以加 fetchpriority="high",并避免对它使用延迟加载。
适用条件是:首屏图片数量少、体积可控。如果首屏本身就是图片墙,优先加载全部反而拖慢,此时应先保证第一行图片,其余延迟。判断结果是看首屏最大图片的加载时间是否明显下降,而不是看总请求数是否减少。
脚本放在 <body> 末尾,或用 defer、async,避免阻塞 HTML 解析。样式表放在 <head>,但只放首屏需要的规则,其余可以拆分后按需加载。字体如果影响首屏文字显示,要限制字重和字符集。
静态资源加缓存标识,常见做法是文件名带内容哈希,例如 app.3f2a1c.js。这样内容变了文件名就变,浏览器可以长期缓存旧文件。具体缓存时长和服务器配置要按自己的部署环境核对,不同托管方式的设置入口不一样。
这些检查不需要特定工具,浏览器自带的功能就够用。如果某项不达标,先回到对应步骤调整,而不是一次性改所有设置。
挑一个你正在做的页面,只处理首屏那张最大的图片:压缩到合适尺寸、补上宽高、设为优先加载,其余图片加延迟加载。改完刷新网络面板对比请求顺序,确认首屏图片提前、后续图片推后,再决定是否继续处理脚本和缓存。