介绍
优化图像资源是提高 Lighthouse 分数和 LCP(最大内容绘制)等 Web 性能指标的最有效方法之一。
在许多 Web 应用程序中,图像占总负载大小的一半以上。缓慢的图像加载时间直接降低了用户体验。
用 WebP 和 AVIF 等下一代格式替换 JPEG 和 PNG 等传统格式已成为现代 Web 开发的标准做法。本文比较了这两种格式,并解释了如何配置响应式、优化的图像传输。
1. 比较下一代格式:WebP 与 AVIF
与 JPEG 和 PNG 相比,下一代格式可以更有效地压缩文件,同时保持视觉质量。
① 网页版
WebP 由 Google 开发,是一种多功能图像格式。
- 特点: 同时支持有损压缩(替代JPEG)和无损压缩(替代PNG)。它还支持 Alpha 通道透明度和动画。
- **压缩:**与同等质量的 JPEG 相比,文件大小减少 25% 到 30%。
- 支持: 几乎所有现代网络浏览器都支持,使其成为网络图像的事实上的标准。
② AVIF
AVIF 是一种基于 AV1 视频编解码器的开放、免版税的图像格式。
- 特点: 提供比 WebP 更高的压缩比,并支持广色域和 HDR。它在处理渐变和详细的摄影图像时表现良好,最大限度地减少了压缩伪影。
- **压缩:**与同等 JPEG 相比,文件大小减少 50% 或更多。
- 支持: 支持Chrome、Firefox、Safari等主流浏览器,为生产环境做好准备。
2. 使用 HTML 元素进行后备交付
由于并非所有浏览器都支持 AVIF,因此建议的方法是提供后备链:如果支持,则提供 AVIF,回退到 WebP,并使用标准 JPEG 或 PNG 作为最终后备。
您可以使用 <picture> 元素 在 HTML 中直接配置此交付。
<picture>
<!-- 1. Preferred: High-compression AVIF (served if the browser supports it) -->
<source srcset="image.avif" type="image/avif">
<!-- 2. Secondary: Widely supported WebP format -->
<source srcset="image.webp" type="image/webp">
<!-- 3. Final Fallback: Traditional JPEG for older browsers -->
<img src="image.jpg" alt="Optimized showcase image" width="800" height="600" loading="lazy">
</picture>
这种方法的优点
- 不需要 JavaScript: 浏览器评估
type属性,选择它支持的最有效的格式,然后仅下载该文件。 - 防止布局移动: 在后备
<img>元素上设置显式width、height和loading="lazy"属性会保留页面上的布局空间,从而防止累积布局移动 (CLS)。
3. 自动化CDN端图像优化
如果您想让 HTML 标记保持简单,您可以将图像优化工作转移到托管平台和 CDN(例如 Cloudflare 或 Vercel)。
这些服务读取浏览器传入的 Accept 请求标头(例如 image/avif,image/webp,*/*),并以客户端支持的最有效格式动态转译、缓存和提供图像。
- 示例(Cloudflare 图像 API):
请求
/cdn-cgi/image/format=auto,width=800/image.jpg指示 CDN 根据客户端的功能自动返回大小正确的 WebP 或 AVIF 文件。
结论
优化网站的图像是提高页面加载速度的直接方法。
- 在 WebP 上标准化一般资源,并添加 AVIF 以获取高质量照片。
- 使用 HTML
<picture>元素构建从 AVIF 到 JPEG 的后备。 - 考虑使用自动 CDN 优化来保持标记干净。
实施这些策略将减少页面大小并加快用户的渲染时间。

