图片与资源加载安排的核心是控制首屏体积、明确加载优先级、避免阻塞渲染。对已有页面,先测量再改,比直接换格式或加插件更可靠。下面用一个假设的荆州本地服务站点为例,说明可执行的步骤和容易犯的错误。
假设某荆州网站开发项目有一个服务介绍页,首屏放了一张横幅图,文件为 2.4MB 的 JPEG,同时引入了三个未压缩的图标字体和一个轮播插件。用户反馈打开慢,尤其在移动网络下。这个案例不代表任何真实项目结果,只用于说明排查顺序。
第一步不是立刻压缩图片,而是打开浏览器开发者工具的 Network 面板,勾选 Disable cache,刷新页面,按 Size 排序。重点看三项:首屏最大资源的体积、加载顺序、是否存在阻塞渲染的 CSS 或同步脚本。判断结果:如果最大图片超过 500KB 且位于首屏,优先处理它;如果脚本排在图片前且体积大,先调整加载方式。
资源可分为三类:首屏必需、首屏非必需、非首屏。安排原则是让首屏必需资源尽早出现,其余延后。
loading="lazy",但首屏图片不要加,否则可能延迟显示。defer 或 async,或移到页面底部;轮播、统计、客服类脚本通常属于这一类。常见错误是把所有图片都加上懒加载,包括首屏横幅,结果首屏反而更慢;或者只压缩了图片,却留下一个 300KB 的同步脚本继续阻塞渲染。判断方法:改完后重新看 Network 面板,首屏关键资源的加载完成时间是否提前。
格式选择取决于内容和兼容要求。照片类图片通常用 WebP 或 AVIF 能在同等观感下减小体积;图标、线条图用 SVG 更合适;需要透明通道的简单图形可考虑 PNG。使用现代格式时,用 <picture> 提供 JPEG 或 PNG 回退,避免老浏览器无法显示。
尺寸方面,不要用一张 2000 像素宽的图缩放到 400 像素显示。按实际显示尺寸的 1.5 到 2 倍准备图片,再用 srcset 和 sizes 让浏览器按屏幕选择。检查项:在移动端模拟器下,实际下载的图片宽度是否接近显示宽度,而不是原始大图。
首次加载优化后,还要考虑重复访问。静态资源如图片、样式、脚本可以设置较长的缓存时间,并通过文件名带哈希的方式在内容更新时失效。判断结果:第二次访问时,这些资源应显示来自缓存而不是重新下载。注意不要给 HTML 文档设置过长缓存,否则用户可能看不到更新。
如果使用内容分发网络,确认图片是否经过压缩和格式转换,但不要假定某个服务一定开启这些功能,应以实际响应头和下载体积为准。
下一步:挑当前项目中最重的一个页面,按上面的顺序测一次,先改体积最大且位于首屏的那张图,再处理阻塞脚本,改一项测一项。