安排图片与资源加载的目标,是让访客先看到正文和关键按钮,再逐步补齐大图与次要脚本。做法是:首屏只加载必要资源,其余图片延迟加载,脚本按需加载,并给图片预留尺寸避免页面跳动。第一次接触这个问题,可以先从“首屏需要什么、其余资源何时来”这两步入手。
从交付结果倒推:访客打开页面后的第一眼,应该看到标题、正文开头和主要操作入口。据此列出首屏必需资源:
首屏之外的图片、评论组件、统计代码、轮播图剩余帧,都属于次要资源。判断标准很简单:把这些资源全部去掉,页面是否仍然能读、能点、能完成主要动作。能,就说明它们可以推迟。
图片通常是个人网站里最占流量的部分。可执行的做法有三项:
loading="lazy",让浏览器接近可视区域时才请求。<img> 上写清 width 和 height,或用 CSS 固定宽高比,避免图片到达后把正文挤下去。适用条件:文章列表、相册、长文配图适合懒加载;首屏主图不建议懒加载,否则会拖慢第一眼观感。判断结果:如果滚动时图片才出现、且页面没有明显位移,说明安排基本合理。若首屏主图也延迟,访客会先看到空白区域,需要改回首屏直接加载。
脚本放在 <head> 里且没有 defer 或 async 时,会阻塞页面渲染。个人网站常见的处理方式是:
defer。这里要区分“可能原因”和“已经定位的原因”:页面加载慢可能是图片过大,也可能是脚本阻塞,还可能是服务器响应慢。不要只凭一个现象就断定是图片问题,应先用浏览器开发者工具的 Network 面板看每个请求的大小和耗时,再决定改哪里。
打开浏览器开发者工具,切到 Network 面板,刷新页面,按下面的检查项逐条看:
defer。假设一个个人博客首页有一张 2MB 的横幅和二十张文章缩略图。若全部立即加载,首屏要等很久;改成横幅压缩到 200KB 以内、缩略图懒加载后,首屏请求数会明显减少。这是假设示例,用于说明判断方向,实际数值以你自己的测试结果为准。
先只改一件事:给首屏之外的图片加懒加载并补上宽高,然后用开发者工具对比修改前后的首屏请求数量和加载顺序。确认这一步有效后,再处理脚本的加载时机。