← 返回博客

你的图片可能是网站最慢的部分

当页面感觉缓慢时,开发者通常会先看代码,但瓶颈往往在于媒体库。加载超过四秒的首页通常具有完全正常的 HTML、CSS 和 JavaScript——以及大量未优化的图片。

根据 HTTP Archive 的数据,图片占平均网页总传输大小的 50% 以上。对于媒体密集型网站——电子商务商店、作品集、博客——可能达到 70% 或更多。再多的 JavaScript 优化也无法修复下载 15 MB 未压缩产品照片的页面。

大图片的真正代价

大图片不仅仅会拖慢您的页面。它们会产生一系列问题:

最常见的错误

在审计了数百个网站后,同样的模式反复出现:

1. 提供全分辨率图像

最常见的错误:上传一张 6000×4000 的照片(12 MB)并在页面上以 600×400 显示。浏览器下载的像素比需要的多 100 倍,然后在渲染过程中丢弃 99%。

修复方法很简单:将图像调整为其将实际显示的最大大小,然后压缩它们。质量 80 的 600×400 JPEG 通常为 30–80 KB,而不是 12 MB。

2. 照片使用 PNG

PNG 是无损的,这意味着它完美地保留了每个像素。对于照片来说,这是浪费——人眼无法区分 PNG 照片和质量 80 的 JPEG,但 PNG 可能大 5–10 倍。

将 PNG 用于具有锐利边缘、文字或有限颜色的图像(Logo、图标、截图)。将 JPEG 或 WebP 用于照片。

3. 不使用 WebP

WebP 在同等质量下产生的文件比 JPEG 小 25–35%,所有现代浏览器都支持它。当 WebP 可用时,几乎没有理由提供 JPEG。

使用 <picture> 元素提供 WebP 并附带 JPEG 回退:

<picture>
  <source srcset="photo.webp" type="image/webp">
  <img src="photo.jpg" alt="...">
</picture>

4. 忽略响应式图像

桌面显示器宽 1920px。手机宽 375px。向两者提供相同的图像会浪费移动端的带宽,并在桌面上提供模糊的图像。

srcset 属性允许您提供多种尺寸并让浏览器选择:

<img src="photo-800.jpg"
  srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
  sizes="(max-width: 600px) 400px, 800px"
  alt="...">

压缩图片时应该注意什么

CompactJPG 让这一切变得简单:上传、压缩、保存。所有处理在浏览器中完成——快速、私密、免费。