一张 240KB 的界面截图批量转 WebP,产物变成 610KB,页面上图片总传输量反而多了 40%,首屏时间跟着变长。乍看像缓存或者权限的锅,追下去往往不是。

cwebp -q 80 -lossless 0 shot.png -o shot.webp
ls -l shot.png shot.webp

追下去是这么回事:转换工具默认走无损模式,截图里又有大面积渐变和文字边缘,无损编码的字典开销比原 PNG 还大。质量参数在这个模式下根本没参与计算。

「WebP 体积反增」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,先去掉无损开关,改成有损并给 80 左右的质量;对纯色和文字截图单独测一版,比较转换前后字节数;在构建流程里加体积判断,转完更大就保留原格式。

验收就看一点,同一张截图转完小于原文件,页面图片总量下降。

作者 9823189