WordPress 6.1 WebP图片默认计划被暂停:技术争议与未来方向探讨

上周,WordPress 性能团队的核心成员们正全力以赴完善多 mime/WebP 功能的后续补丁,这一关键功能此前已于7月底成功合并至6.1版本的核心代码中。除了这项主要工作外,团队还同步推进了多个相关子项目,包括为不支持WebP的浏览器开发兼容性shim层,以及新增对PDF文件的格式支持等,这些任务均通过独立的工单进行管理。

关于新JPEG图像上传时默认生成WebP格式这一提议,从一开始就引发了激烈争议。尽管由Google资助的项目推动者们在收到首轮重要批评反馈后对方案进行了部分调整,但其他贡献者仍持续表达未被充分考虑的担忧。部分开发者报告了该功能在实际应用中存在的问题,并建议应采用选择加入的渐进式推广策略,这一提议在主要功能提交前遭到立即否决。

上周,WordPress首席开发人员Andrew Ozz提出了新的反对意见:正如@MatthiasReinholz、@eatingrules等开发者所共识,我认为当前方案可能存在明显缺陷。当其中一半图像永远无人问津时,为何要创建两倍多的文件占用大量额外存储空间?从我的角度看,更优的方案是所有图像子尺寸统一采用WEBP格式。若确实需要JPEG格式,可按需即时转换。完全没有必要用这些无用文件挤占Web服务器资源。另一方面,若WEBP文件实际体积反超JPEG,可能意味着我们需要更完善的工具支持,而当前补丁显然时机未到。

六周前,谷歌资助的核心贡献者Adam Silverstein在回应”资源转换成本过高”的质疑时表示,用于生成上传图像的资源将”显著提升”。”但服务于图像的总体资源消耗会减少”,他解释道。”与图像上传相比,图像服务请求频率低得多,因此压缩和存储的额外投入是值得的。”这恰恰是Ozz反对该方案的核心论点之一。”上传时资源使用激增会带来严重后果”,Ozz指出:”大量上传失败将让用户陷入困境,同时大幅增加对WordPress及托管服务商的支持压力。这绝非可接受的风险。”

大约24小时后,谷歌资助的贡献者Felix Arntz确认旧浏览器WebP回退机制已准备就绪,计划几天内提交相关代码。”请勿提交更多代码,除非能解决上传后创建图像子尺寸所需资源激增的问题”,Ozz强硬表态。”正如我强调的,这种资源增长是不可接受的。”他进一步追问:”上传不同尺寸图像时具体需要多少资源(内存、处理时间等)?受影响的网站规模有多大?是否有其他解决方案?您清楚上传后处理失败会导致什么后果吗?”他直言不讳:”目前看来,这个补丁必须被回滚重构才能解决根本问题。”

WordPress 6.1 WebP图片默认计划被暂停:技术争议与未来方向探讨

Adam Silverstein随后回应了Ozz的担忧,阐述了选择当前方案的原因,包括应对极端情况的设计,并暗示未来将支持AVIF等新兴格式:”我倾向于同意您的评估,即所有子尺寸应仅生成WebP,这更符合原始提案。对绝大多数用例而言这是最佳选择。我愿意考虑将此设为默认选项(需配合缓解措施)。我们选择同时生成两种格式是出于向后兼容考虑,主要针对三种边缘情况:旧版Outlook/Windows客户端的邮件图像、不支持WebP的Open Graph标签,以及较旧版Safari浏览器。我们曾考虑仅保留全尺寸JPEG以确保这些边缘场景可用。”他解释说:”multi-mime支持的核心是为网站提供多种格式选项,通过picture元素实现主备格式切换。这对WebP意义不大,但对未来通过插件或核心支持AVIF等新格式至关重要。”

Silverstein还表示动态生成图像的选项暂不纳入当前工作范围。针对图像上传资源激增的投诉,他回应称团队正在依赖”重试”机制缓解问题:”这一变化使WordPress图像再生重试次数翻倍,虽然处理时间增加,但不会导致失败率激增。我们过去在添加新尺寸时确实遇到困难,但那是在引入重试机制之前。”WebP项目团队更倾向于前端优化,认为上传时额外的资源消耗是WordPress用户的必要付出。”上传时的资源投入需要与前端服务小尺寸WebP图像的资源节省进行权衡,毕竟服务请求频率通常比上传高出几个数量级。”Silverstein补充道:”若所有重试后上传仍失败,用户将面临与当前相同的困境:损坏且无法使用的图像。这可能需要解决,但我认为这种变化不会增加失败率。”

WordPress首席开发人员Dion Hulse还指出了照片目录中WebP转换失败的问题:”近期照片目录上传失败的主要原因是额外的WebP转换。请参考#meta6142及关联工单。错误通常表现为’Allowed memory size of 256M bytes exhausted (tried to allocate 90M bytes)’,主要发生在初始全尺寸JPEG转WebP时,且仅影响部分图像。可能与$quality参数设置有关(我记得默认值82是为JPEG优化的?)。由于照片目录当前不使用WebP,我已暂时禁用JPEG转WebP功能,但指出这可能表明应只为调整尺寸的图像生成WebP,而非原始文件。”

Silverstein确认正在调查Hulse报告的问题,认为这可能暴露了系统漏洞。Ozz转而建议按需生成子尺寸,这样既能快速处理上传图像,又能避免生成不必要的JPEG文件。他还指出图像后处理的”重试”机制效果不达预期:”最糟糕的情况是后处理失败,导致原始上传文件保留,而WP代码大多回退到可用尺寸,最终用户只能获得4MB-8MB的巨大图像。这是一个严重缺陷。”Silverstein回应称,他同意多数人的观点,并提出了两条潜在解决方案:一是保留多mime架构但更改默认设置,对超过特定阈值的图像仅生成JPEG;二是恢复多mime架构并切换回单一mime方法,对阈值以上图像使用WebP,同时调整兼容层保留JPEG。性能团队正在深入调研,并暂时停止提交其他代码,等待项目方向反馈。

注:本文内容源自WordPress Tavern,由WordPress大学翻译整理。对于”WordPress默认采用WebP”的话题,您有何见解?欢迎在评论区分享您的看法。

文章网址:https://www.wpbull.com/news/2001.html