图片格式之争:AVIF还是JPEG XL
AVIF vs JPEG XL:开发者必看的图片格式终极对决
图片优化一直是网站性能提升的"捷径"。一张图差个 100KB,听着不多,但你要是每天有上万次页面访问,那加起来可就吓人了。所以当 JPEG XL 终于获得主流浏览器支持的时候,开发者们兴奋了——终于有个压缩率更高的现代格式了!
但现实情况嘛……比宣传的复杂多了。
我花了不少时间研究 AVIF 和 JPEG XL 在真实场景下的基准测试。下面给你说说数据告诉我们的真相,以及对你的项目意味着什么。
赶时间?直接看结论
如果你做网站,想在保证画质的前提下让文件更小,AVIF 稳定碾压 JPEG XL。在常规质量设置下,JPEG XL 的文件比 AVIF 大 15% 到 25%。就算把编码器开到最大努力模式,差距缩小到 6% 到 20%,AVIF 依然占上风。
编码器的选择也至关重要。JPEG XL 编码器不是都一样的。新出的 jixel 编码器通常比老牌 libjxl 产生的文件更小。但如果图片带透明通道,这个优势就没了,甚至会反过来。
截图和插画:AVIF 的主场
这个差距就明显了。截图、UI 设计稿、矢量插画这类内容,AVIF 把 JPEG XL 按在地上摩擦,差距大到让你不得不重新考虑。
默认设置下,JPEG XL 文件比 AVIF 大 30% 到 90%。开到最大努力模式,JPEG XL 仍然大 20% 到 70%。很多人觉得这种内容必须用无损格式,但实际上有损压缩的 AVIF 表现非常好,肉眼根本看不出区别。
如果你做的是仪表盘截图、文档截图、设计预览这类东西,AVIF 就是你的默认选择。
透明通道:情况有点复杂
透明通道的支持,两个格式差距很大。AVIF 用有损压缩处理透明通道,文件大小控制得不错。JPEG XL 的 libjxl 编码器呢?默认设置就比 AVIF 大 31% 到 44%,开到最大努力模式更是离谱——大 61% 到 70%。
jixel 的做法不一样,它的 alpha 通道默认是无损的。听起来质量更好对吧?但实际上文件比 AVIF 大 2 到 3 倍。有时候无损反而不是正确答案。
编码速度和内存:真实项目的权衡
你要是每天要在构建流程里处理成百上千张图,性能就很关键了。AVIF 编码更快,内存占用更少,翻译成大白话就是——CI/CD 构建更快,账单更便宜。
jixel 在这里有点意外——它编码速度实际上比 AVIF 还快,内存占用也更少。但别忘了,这些更快的编码通常会产生更大的文件。速度上的效率被压缩率吃掉了。算总账的话,还是 AVIF 更划算。
解码性能:这里才是重点
用户关心的是页面加载快不快,不是你构建 pipeline 跑多快。解码速度直接影响用户能开始操作页面的时间,而这里又是 AVIF 赢。JPEG XL 在中等质量设置下,解码时间通常是 AVIF 的 2 到 3 倍。
有意思的是,质量设置拉满的情况下,差距会缩小,有时候 Chrome 解码 JPEG XL 甚至更快。但对于普通网站的画质需求,AVIF 解码更快,你的访客等待时间更短。
努力值设置的门道
质量预设不是都一样。调到更高的 effort 档位(编码更慢、压缩尝试更多)对于 AVIF 和 jixel 都值得——效果确实更好。但 libjxl 的高 effort 档位就是另一回事了。
libjxl 的最大努力模式慢得要命,内存占用飙升,有时候产生的文件甚至比默认设置还大。你要是用 libjxl,就用默认 effort 得了。想要更好的 JPEG XL 压缩?换 jixel。
HDR:正在冒头的新问题
高动态范围内容有不同的挑战。JPEG XL 的增益图(gain map)技术——也就是让 HDR 内容在普通屏幕上也能显示的那套——现在浏览器解码器还不支持。相关工具也还是实验性的。
AVIF 对 HDR 的支持更成熟一些,但两个格式都没有完美的解决方案,能让 HDR 内容优雅降级到普通屏幕。目前来看,网页上的 HDR 还是个专业场景,需要仔细掂量。
JPEG 兼容牌
JPEG XL 有个独门绝技:向后兼容现有的 JPEG 文件。你可以把老的 JPEG 图片转成 JPEG XL,轻松获得 9% 到 20% 的体积缩小,还不损失画质。格式本身自带这个转换工具。
如果你手头有一大堆老图片,这个功能就有用了。几千张图平均小 15%,带宽省下来可不是小数目。
无损压缩:JPEG XL 的主场
如果真的、确定、一定需要无损压缩,JPEG XL 明显更强。无损 WebP 比 JPEG XL 大 9% 到 17%,无损 AVIF 更夸张——比 JPEG XL 大 30% 到 120%。
但说实话,网页上几乎不需要无损图片。文件大小的代价根本不值那点画质提升。你要是发现自己在网页上用无损图片,重新想想这个决定。如果你非要用,jixel 的高 effort 档位悠着点——编码出来的东西解码可能慢得让人崩溃。
给你的项目一点建议
说点实在的:默认用 AVIF,调到 4:4:4 色度子采样,开最大 effort。画质提升值得你等那点编码时间,而且跟 JPEG XL 比起来,文件大小的优势是实打实的。
但别偷懒,用你实际的内容测一测。基准测试里也有 JPEG XL 表现持平甚至更好的情况。如果你发现某种图片类型 AVIF 表现不对劲,试一下 jixel 编码的 JPEG XL,对比一下。
两个格式最近进步都很大。今天看起来正确的选择,半年后可能就不一样了。图片格式的格局变化很快的。
大局观
图片优化可不只是选个格式那么简单。构建流程、CDN 配置、响应式图片处理、懒加载策略,这些都是活儿。格式选择只是其中一环。
用 Vibe Hosting 的开发者们运气不错,现代主机基础设施原生支持这些格式。压缩在部署时做一次,好处自动送到每个访客眼前。
别让选格式这事卡住你的优化进度。AVIF 今天是更稳的选择。但保持关注——图片格式的竞争还在继续,正是这种竞争让大家都越做越好。
你项目里现在用啥图片格式?有没有试过 AVIF 或 JPEG XL?评论区聊聊呗。