最后更新时间为 2022年7月5日
一年前,WordPress 5.8 引入了对 WebP 的支持,允许用户在其内容中上传和使用 WebP 图像。2022 年 3 月,性能团队通过提议 WordPress 默认启用 WebP来扩展对图像格式的核心支持。这将包括为新的 JPEG 上传生成 WebP 图像以及将 WebP 图像用于网站内容。4 月,在收到大量批评意见后,这项有争议的提案被搁置。
经过数月的研究,该团队重新评估了其方法并总结了其发现。对 WebP 兼容性的担忧似乎没有根据,因为研究表明超过 97% 的网络浏览器是兼容的,超过 97% 的电子邮件客户端也是如此。
移动应用程序与支持 WebP 的 iOS 14+(旧版本将提供 JPEG)和从 Android 4.0 原生支持 WebP 的 Android 具有很强的兼容性。团队发现所有顶级 RSS 阅读器都支持 WebP。兼容性方面的唯一异常值是 Open Graph 消费者,它们具有混合支持。
先前反馈的主要担忧之一是,该提案有可能使用于图像的磁盘空间量翻倍,因为除了 JPEG 子大小之外,它还会生成 WebP 缩略图。性能团队贡献者 Adam Silverstein 在对托管公司进行调查后分享了团队的发现:
为了评估生成 WebP 图像对站点存储的总体 影响,该团队调查了托管服务提供商。共有 17 个响应, 结果表明存储文件的数量对于大多数主机/站点来说通常不是问题,尽管随着时间的推移存储空间可能会成为一些用户的问题。尽管如此,对于大型主机(拥有 1,000 个或更多托管站点),绝大多数站点 (> 86%) 将不受影响,即使它们的存储需求翻了一番。我们还了解到,一些存储空间有限的低端托管计划在其托管堆栈中也缺乏 WebP 支持,这意味着他们无论如何都不会获得额外的图像生成。
声明中可能包含一些假设,即“对于大多数主机/站点而言,存储文件的数量通常不是问题”。对该团队调查的回应表明,58% 的用户不会受到存储需求翻倍的影响。仅调查了 17 位房东,数据中未包含公司名称。即使估计有 14% 的网站面临接近容量的风险,这也有可能影响数百万个 WordPress 网站。
性能团队提出了一些值得注意的更改来解决问题,包括提供一个 JavaScript 片段,该片段检测缺乏 WebP 支持的浏览器并改为加载 JPEG。默认情况下,其他 WebP 修订包括以下内容:
- 在 6.1 中默认自动生成 仅 核心图像大小的 WebP 版本。 自定义图像大小最初必须选择接收自动生成的 WebP 版本,或者如果它们专门用于 WebP 无益或不支持的特殊情况,则选择退出。
- 仅当次要 (WebP) 子大小 小于主要 MIME 类型时才保留它们。
- 只为用于面向用户的前端内容的图像大小生成 WebP 图像。这避免了为永远不会使用的 WebP 图像浪费存储空间。
- 引入一个过滤器来控制基于图像子大小的其他 MIME 类型的生成。这使开发人员能够排除某些图像大小,例如那些未在前端内容中使用的图像大小。
默认情况下,WebP 提案只会影响包含在核心中后上传的新图像。它不会为现有上传自动生成 WebP 图像。想要转换过去上传的用户需要使用 WP-CLI 或像 Regenerate Thumbnails 这样的插件。
迄今为止,对该提案的修订收到了不同的反馈。一些人强烈支持新方法,而另一些人则鼓励团队考虑对可能受到影响的用户的一些实际影响。
WordPress 开发人员 Jon Brown说: “不能简单地说没关系,因为‘绝大多数网站 (> 86%) 不会受到影响。“首先,14% 是 WordPress 的条款很多。我们不知何故需要继续支持仍在运行 PHP 5.6 的 2.8% 的网站,但 14% 不是很重要吗?
“这里不仅需要考虑 IF,还需要考虑这 14% 的站点将如何受到影响,不仅是今天,未来也是如此。站点是否只需要顺利升级存储,或者它们会用完磁盘空间并崩溃?还是备份突然开始失败?”
评论中的多位参与者建议 WordPress 考虑采用更现代的 AVIF 格式,与 WebP 相比,它具有更好的质量和压缩率。
“既然这项举措本质上是一种渐进式增强,那么在优雅地回退的同时支持下一代格式(如 AVIF)不是更有意义吗?” JavaScript 开发人员 Kevin Batdorf 说。“随着时间的推移,随着时间的推移,浏览器会增加支持,它们就会到位。
“转向 WebP 支持的感觉就像 WordPress 添加了 REST API,而每个人都开始转向 GraphQL。REST 很棒,WebP 也很棒,但它是当前的技术,很快就会过时。”
性能团队贡献者 Bethany Chobanian Lang表示, AVIF 已经在他们的关注范围内,但它的浏览器支持仍然不足,只有不到 70% 的网络。
如果你对该话题感兴趣,可以在此参与讨论,Silverstein 还鼓励参与修订方法的Trac工单。性能团队贡献者的目标是在 6.1 发布周期的早期合并此更改以获得更多测试。
最后,请大家放心,WordPress 会提供钩子让我们禁用这个默认功能的!