FileKit
返回博客
·8 分钟阅读

图片优化与网页性能——开发者指南

如何为网站优化图片:格式选择、尺寸调整、压缩、懒加载、响应式图片,以及对 Core Web Vitals 的影响。

为什么图片优化对网站很重要

图片是大多数网页上最重的资源。如今平均网页加载超过 1 MB 的图片。 未优化的图片会拖慢页面加载速度,损害搜索引擎排名(Google 将页面速度 作为排名信号),增加托管带宽成本,并赶走访客——研究一致表明,访客会 放弃加载超过 3 秒的页面。

图片优化是在不明显降低质量的前提下减小图片文件大小的过程。做得好的话, 你可以将图片大小减少 60-80%,同时保持在正常观看距离下与原图难以 区分的视觉质量。

图片优化的三大支柱

1. 选择正确的格式

你选择的格式对文件大小影响最大:

  • JPEG / JPG:最适合照片和色彩渐变平滑的图片。有损 压缩,不支持透明度。通用的兜底格式。
  • PNG:最适合截图、Logo、图标和包含文字或锐利边缘的图片。 无损压缩,支持透明度。照片的文件比 JPEG 大。
  • WebP:网页的现代默认选择。在同等质量下比 JPEG 小 25-35%,支持透明度和动画。所有现代浏览器支持。推荐将 WebP 作为主要 格式,JPEG 作为备选。
  • AVIF:最前沿——比 JPEG 小 50%。浏览器支持正在增长 但尚未普及。如果你的受众主要使用 Chrome、Firefox 或 Safari 16+, 可以使用。
  • SVG:用于图标、Logo 和简单插图。矢量格式可无限缩放, 通常只有几 KB。

更详细的比较见 WebP vs PNG vs JPG 对比指南

2. 调整到实际显示尺寸

这是影响最大的优化,也是最常被遗漏的。如果你的网页以 800 × 600 像素显示图片,没有理由提供 4000 × 3000 像素的原图。浏览器会 下载完整的 4000 像素图片,然后丢弃 96% 的像素以 800 像素显示。

规则:为 Retina/HiDPI 屏幕提供显示尺寸 2 倍的图片。如果 CSS 宽度是 400px,提供 800px 宽的图片,而不是 4000px。

  • 首屏大图:通常 1200-1600px 宽(在标准布局中显示 为 600-800px)
  • 缩略图:根据显示尺寸 300-600px 宽
  • 博客内容图片:全宽 1200-1400px,行内图片 800px

3. 积极压缩

选择正确的格式和尺寸后,应用压缩。目标是找到文件大小显著下降但视觉 质量仍可接受的质量水平:

  • JPEG:质量 75-85% 是网页的最佳区间。低于 70%,近距离 检查会看到伪影。高于 90%,文件大小急剧增加但视觉改善微乎其微。
  • WebP:质量 75-80% 等效于 JPEG 85%。
  • PNG:使用最大压缩(无损,质量始终完美)。pngquant 等工具应用有损 PNG 压缩,减少调色板同时保持视觉质量。

使用 FileKit 的图片压缩工具 直接在浏览器中压缩图片,无需上传到任何服务器。

响应式图片:为每个设备提供正确尺寸

现代 HTML 提供 srcset 属性,为不同屏幕宽度提供不同 尺寸的图片:

<img
  src="photo-800.webp"
  srcset="photo-400.webp 400w,
          photo-800.webp 800w,
          photo-1200.webp 1200w"
  sizes="(max-width: 600px) 100vw,
         (max-width: 1200px) 50vw,
         800px"
  alt="图片描述"
  width="800"
  height="600"
  loading="lazy"
/>

浏览器选择适合当前视口和屏幕密度的最小图片。慢速网络上的手机下载 400px 版本;4K 显示器的桌面下载 1200px 版本。

懒加载:只加载用户看到的

loading="lazy" 属性告诉浏览器延迟加载图片, 直到它们即将滚动进入视口。对于有 20 张图片的页面,浏览器最初只加载 可见的 2-3 张,其余的随用户滚动而加载。

重要例外:首屏大图和任何首屏以上的图片应使用 loading="eager"(默认值)配合 fetchpriority="high",确保尽快加载。

累积布局偏移:缺少尺寸的隐藏代价

当浏览器遇到没有 width 和 height 属性的 <img> 标签时, 不知道要预留多少空间。图片加载后,下方的内容向下跳动——这就是累积布局 偏移(CLS),Google 会惩罚 CLS 分数高的页面。

解决方法很简单:始终在每个图片元素上包含 width height 属性。CSS 可以覆盖显示尺寸,但属性中的宽高比 让浏览器在图片加载前预留正确的空间。

现代图片分发:<picture> 元素

为了最大化优化,使用 <picture> 元素为支持的浏览器 提供 AVIF,WebP 作为主要格式,JPEG 作为通用备选:

<picture>
  <source srcset="photo.avif" type="image/avif" />
  <source srcset="photo.webp" type="image/webp" />
  <img src="photo.jpg" alt="描述" width="800" height="600" loading="lazy" />
</picture>

优化检查清单

  • 所有图片使用 WebP(JPEG 备选)或 AVIF(如支持)
  • 图片尺寸为显示尺寸的 2 倍,不是原始相机分辨率
  • JPEG 质量 75-85%,而不是 95-100%
  • 每个 <img> 有明确的 width 和 height
  • 首屏以下图片使用 loading="lazy"
  • 首屏大图使用 fetchpriority="high"
  • 响应式图片使用 srcsetsizes
  • 图标和 Logo 使用 SVG 而非位图
  • 没有图片以原始相机分辨率(3000-6000px)提供

图片优化工具

  • FileKit 图片压缩工具 — 浏览器端,无需上传,支持 JPEG/PNG/WebP
  • FileKit 图片格式转换工具 — 格式间转换(PNG → WebP、JPEG → WebP)
  • Squoosh — Google 的浏览器端工具,支持并排质量比较
  • Sharp (Node.js) — 用于构建管道的程序化图片处理
  • ImageMagick — 命令行批量处理

衡量优化效果

优化后,使用以下工具衡量改善:

  • Google PageSpeed Insights — 为页面评分并专门标记 过大的图片
  • Chrome DevTools 网络面板 — 显示每张图片的传输大小 和加载时间
  • WebPageTest — 瀑布图显示图片加载顺序和对总页面 重量的影响
  • Lighthouse — 估算正确尺寸和下一代格式图片的节省量

优化良好的页面,普通内容页的图片总重量应低于 500 KB,图片密集的 画廊页低于 1 MB。