随着浏览器对 WebP 图像支持的增长,谷歌正在推动 WordPress 默认将媒体库转换为 WebP。这是现实的吗?
性能团队的一项新提议开启了在所有 WordPress 网站上默认加载 WebP 图像的想法。上周,这个想法引发了很多争论,因为贡献者和用户讨论了自响应式图像进入 WordPress 4.4 以来,媒体前端最大的变化可能带来的好的和坏的副作用。自宣布该提案以来,该团队决定退后一步,进行更多研究,并从社区收集更多反馈。我们将快速分解 WebP 图像是什么以及这种变化将如何影响最终用户。
什么是 WebP 图像?
十多年前由 Google 开发/收购的 WebP 是一种图像格式,旨在作为 PNG 和 JPEG 图像文件的更小、更快的替代品。 WebP 是否总是一个较小的文件还有待观察,但总体而言,图像格式的受欢迎程度有所增加,这主要是由于 WebP 作为推荐指标包含在 Google 的 Pagespeed Insights 工具中。
我之前写过关于性能团队和谷歌的强力支持作为推动 WordPress 项目方向的一种方法。无论是好是坏,这都是另一个例子,说明即使是开源项目最终也会受制于拥有资源为它们做出贡献的现有科技巨头。不过,总的来说,WebP 的支持肯定比谷歌以前的想法(还记得 AMP 吗?)要少一些有害的特性。
值得注意的是,WordPress 从 5.8 开始就支持上传 WebP 图片。此处讨论的是 WordPress 是否应在您上传 JPEG(以及最终的 PNG)时自动将其转换为 WebP 图像。然后 WordPress 会动态地为您的受众提供正确的文件类型。这个关键区别对于理解为什么这个讨论具有如此高的风险很重要。
WebP 的案例
这里的基本卖点是 WebP 图像更小更快,因此使用的带宽更少。您正在减少通过互联网传输的数据量,每一点都有助于加快您的网站速度,并最终降低整个网络的能源使用量。一个网站上的微小变化可能会对 43% 的网络产生巨大影响。
目前,两种最流行的图像格式服务于不同的用例。 JPEG 非常适合摄影。它们捕捉了广泛的调色板和现实生活的一般细节。它们可以比 PNG 压缩得更远,但在此过程中也会丢失很多细节。另一方面,PNG 非常适合艺术品、平面设计和徽标图像。它们在压缩时不会丢失细节,这意味着它们通常不能像 JPEG 那样小,但它们也提供透明度,因此您可以让背景颜色通过 PNG 图像显示。
WebP 旨在结合两种图像类型的优点,从出色的压缩到透明度。随着 WebP 图像获得更多浏览器支持,存在的障碍越来越少,支持它们的论点继续增长。
反对 WebP 的案例
反对默认加载 WebP 图像的主要论点是压缩是否真的有用,甚至对大多数图像有用。虽然 WebP 看起来比 PNG 文件平均要小很多,但 JPEG 并非总是如此,或者至少有时收益是微不足道的。更糟糕的是,将 PNG 转换为 WebP 实际上要困难得多,并且在大多数流行的网络主机上可能无法实现,因为它们目前已配置。
然而,下一个大抱怨——对服务器存储使用的总体影响——紧随其后。当您将图像上传到 WordPress 时,CMS 实际上会在您的 /uploads/
文件夹中创建该图像的多个副本。例如,一个“全尺寸”图像将被复制、压缩和裁剪成“大”尺寸、“中”和“缩略图”版本。这是假设您的活动主题也不会创建其他大小的图像。总体而言,多种尺寸非常适合存档模板或响应式图像,其中 WordPress 可以为移动浏览器提供较小的图像文件。
但是,将另一种文件格式添加到列表中,我们实际上在一夜之间将每个用户的上传文件夹的大小增加了一倍。对于使用有限服务器空间的预算主机的用户,或者实际上是运行富媒体站点的任何用户,这可能会立即变成额外的成本,甚至在用户获得选择退出所需的相关信息和工具之前。
最后,其他人担心其网站实际标记的潜在变化。 WebP 支持的许多其他迭代实际上改变了页面的标记,导致 CSS 样式无法正确加载的问题。例如,像 Imagify 这样的插件不会使用基本的 <img> 标签,而是使用更现代的 <picture>
标签来包装 WebP 图像的输出,并提供后备。 但是,该 <img>
标记范围内的任何样式都会中断,从而导致时髦的前端样式。
如今,浏览器的支持已经足够广泛,我们看到 .webp 扩展名直接出现在 <img>
标签中,因此这已不再是一个问题,据我所知,它不适用于此实现。
那么,WordPress 应该开始将您的图像转换为 WebP 吗?
这是一个棘手的情况,我不确定是否有正确的答案。 双方都提出了一个体面的论点。
大多数人的第一个建议是这应该是一个选择加入的功能。 现实情况是,我们有一种选择加入功能的方法——它们被称为插件。 我是决策的忠实拥护者,而不是选项:如果需要选择加入,那么它就不需要成为核心。 我实际上是提供一套“核心插件”的支持者,这些插件是受支持的,甚至是预安装的,但从未真正合并。 这里的先例以 BuddyPress、BBPress、Akismet 和“必备”插件 Hello Dolly 的形式存在。
但这里的讨论是关于纳入核心。 WordPress 贡献者“Otto”非常明确地反对它:
If I upload an image, then I have made that image, chosen how it looks, taken steps to optimize it. I chose the format to use. I chose everything about it. […] So when I decide what to do, then WordPress does not get to second guess my decisions.
不幸的是,我认为我们已经远远超过了 WordPress 只是在我们输入内容时呈现内容(参见:响应式图像、块编辑、capital_P_dangit 等),但我确实同意这种观点。 使用图像格式感觉与 WordPress 核心真正应该包含的内容相去甚远。 从长远来看,增加托管服务器上使用的空间可能会限制带宽,但对于 99% 的流量相对较低的 WordPress 网站来说,这可能是一次洗牌。
相反,我希望看到谷歌减少将他们的软件和意识形态推入 WordPress 核心的努力。 WebP 没有什么特别的问题,但是 WordPress 已经支持它,而不是强迫用户使用它。 如果 WebP 将成为下一个大图像格式,那么我们将继续允许用户上传 WebP 图像,而不仅仅是自动生成它们。