图片与资源加载安排的核心不是“全部压缩到最小”,而是按首屏、次屏和可延迟内容分层处理,并让每个资源都有明确的格式、尺寸和加载时机。多人协作时,最怕的是每个人按自己的习惯处理图片,导致上线后首屏被大图拖慢、图标重复加载、改动一处影响多处。下面先讲一个常见误解,再给出可执行的安排方式。
很多团队在广西网站开发项目里会约定“图片统一转WebP、全部加懒加载”,看起来整齐,实际会出问题。首屏主视觉如果也懒加载,浏览器要等脚本执行后才开始请求,首屏渲染反而变慢;而把带透明通道的Logo强行转成有损WebP,边缘可能出现杂色。更关键的是,格式只是资源加载的一个变量,尺寸、位置和加载优先级同样重要。
判断一个资源该怎么安排,可以先问三个问题:它是否出现在首屏?它的显示尺寸是否固定?它是否随用户操作才出现?答案不同,处理方式就不同。
把页面资源分成三类,协作时写进交付清单,能减少大量返工:
这里的“首屏”要以真实设备判断。手机竖屏和桌面宽屏的首屏范围差别很大,协作时应以目标用户的主要设备为准,而不是只看设计稿。
格式选择要看图片内容和透明度需求。照片类内容通常适合有损压缩格式,图标和纯色图形适合矢量或无损格式。是否使用WebP或AVIF,应以目标浏览器支持情况为准,并保留回退方案。尺寸则按CSS显示尺寸的1到2倍导出,避免把4000像素宽的图塞进300像素的卡片里再靠CSS缩小。
一个可执行的检查项:在浏览器开发者工具的网络面板中,按“大小”排序,查看是否有图片的实际请求尺寸远大于显示尺寸。如果有,回到设计或切图环节修正,而不是只在前端加压缩。
原生懒加载可以通过<img loading="lazy">实现,但首屏图片不应加这个属性。对于首屏主图,可以配合<link rel="preload">提前请求,但要谨慎使用,预加载过多会挤占其他关键资源。异步脚本使用<script async>或<script defer>,避免阻塞HTML解析。
下面是一个假设的图片写法示例,用于说明分层思路:
<img src="banner-800.jpg" width="800" height="400" alt="首屏主视觉">
<img src="case-400.jpg" width="400" height="300" loading="lazy" alt="案例图片">
第一张是首屏图,不懒加载并写明宽高,减少布局偏移;第二张是滚动后出现的图,使用懒加载。宽高属性不是可选项,它能让浏览器提前预留空间。
减少返工的关键是把规则写成可检查的条目,而不是口头约定。可以在交付说明中固定以下内容:
如果项目使用构建工具,可以把图片压缩和格式转换放进构建流程,但构建产物仍需人工确认首屏图片没有被错误地延迟加载。工具能统一处理,不能替代对加载时机的判断。
下一步,挑一个已完成的页面,在手机和桌面两种宽度下打开网络面板,记录首屏加载的资源数量和总体积,再对照上面的分层规则逐项调整。这个动作比继续讨论“用哪种格式”更能暴露真实的加载问题。