图片性能优化指南

413 阅读4分钟

图片性能优化指南

概述

图片是网络上最常见且最普遍的资源之一,因此优化图片可以显著提升网站性能。本文将介绍图片性能优化的最佳实践,包括:

  • 图片大小
  • srcset 和 sizes 属性
  • 文件格式
  • 压缩
  • 元素
  • 延迟加载
  • decoding 属性

图片大小

选择合适的图片大小是优化图片的关键步骤。图片大小是指图片的实际像素尺寸。在大多数情况下,图片的大小应该与容器的大小一致。例如,如果一个容器的尺寸是 500x500 像素,那么图片的尺寸也应该为 500x500 像素。

srcset 和 sizes 属性

srcset 属性允许您为不同的设备和屏幕分辨率提供不同的图片版本。sizes 属性则用于指定图片在不同视口宽度下的显示尺寸。通过使用这两个属性,您可以确保用户始终看到最适合其设备的图片版本。

以下代码示例展示了如何使用 srcset 和 sizes 属性:

<img
  alt="An image"
  width="500"
  height="500"
  src="/image-500.jpg"
  srcset="/image-500.jpg 1x, /image-1000.jpg 2x, /image-1500.jpg 3x"
  sizes="(min-width: 768px) 500px, 100vw"
>

这段代码表示:

  • 对于 1 倍设备像素比 (DPR) 的设备,使用 image-500.jpg 图片。
  • 对于 2 倍 DPR 的设备,使用 image-1000.jpg 图片。
  • 对于 3 倍 DPR 的设备,使用 image-1500.jpg 图片。
  • 对于视口宽度大于 768 像素的设备,图片宽度为 500 像素。
  • 对于视口宽度小于 768 像素的设备,图片宽度为 100vw (视口宽度)。

文件格式

选择合适的图片文件格式可以显著影响图片的大小和加载速度。目前,最常用的图片文件格式包括 JPEG、PNG、GIF、WebP 和 AVIF。

  • JPEG: 适用于照片和图像,支持有损压缩。
  • PNG: 适用于需要透明背景的图片,支持无损压缩。
  • GIF: 适用于动画图片,支持无损压缩。
  • WebP: 是一种新的图片格式,支持有损和无损压缩,并且比 JPEG 和 PNG 格式拥有更小的文件大小。
  • AVIF: 是一种新的图片格式,支持有损和无损压缩,并且比 JPEG 格式拥有更小的文件大小。

建议使用 WebP 或 AVIF 格式作为默认图片格式,并根据需要使用其他格式。

压缩

压缩图片可以显著减小图片文件大小,从而提高加载速度。有两种主要的压缩类型:

  • 有损压缩: 通过降低图片质量来减小文件大小。
  • 无损压缩: 通过移除冗余数据来减小文件大小,不会降低图片质量。

建议使用无损压缩压缩 PNG 和 GIF 格式的图片,并使用有损压缩压缩 JPEG、WebP 和 AVIF 格式的图片。

元素

元素允许您为不同的设备和屏幕分辨率提供不同的图片版本。它比 srcset 和 sizes 属性更灵活,可以提供更多选项。

以下代码示例展示了如何使用 元素:

<picture>
  <source type="image/avif" srcset="image.avif">
  <source type="image/webp" srcset="image.webp">
  <img
    alt="An image"
    width="500"
    height="500"
    src="/image.jpg"
  >
</picture>

这段代码表示:

  • 对于支持 AVIF 格式的设备,使用 image.avif 图片。
  • 对于支持 WebP 格式的设备,使用 image.webp 图片。
  • 对于不支持 AVIF 和 WebP 格式的设备,使用 image.jpg 图片。

延迟加载

延迟加载可以延迟加载图片,直到用户滚动到图片所在的位置。这可以显著提高页面加载速度。

以下代码示例展示了如何使用 loading 属性延迟加载图片:

<img
  alt="An image"
  width="500"
  height="500"
  src="/image.jpg"
  loading="lazy"
>

decoding 属性

decoding 属性允许您指定图片的解码方式。async 值表示图片可以异步解码,sync 值表示图片应该同步解码。

以下代码示例展示了如何使用 decoding 属性:

<img
  alt="An image"
  width="500"
  height="500"
  src="/image.jpg"
  decoding="async"
>

总结

通过遵循本文介绍的最佳实践,您可以显著优化图片性能,从而提高网站加载速度和用户体验。