PageSpeed无法调整WebP图片尺寸
我之前帮客户调试ModPagespeed时碰到过几乎一模一样的问题,结合你给出的环境配置,咱们一步步来排查解决:
核心排查方向梳理
你已经启用了resize_images(ri)和WebP相关滤镜但没生效,大概率是这几个原因:
- 老版本ModPagespeed对原生WebP的resize支持存在缺陷
- 滤镜优先级或配置冲突导致resize逻辑未触发
- 服务器缺少WebP处理依赖,或图片本身不符合处理条件
具体排查&解决步骤
强制触发resize并查看debug日志
你已经开启了debug(db)滤镜,这非常有用!直接访问你的WebP图片,附加参数?PageSpeed=on&PageSpeedFilters=+ri&w=400(把400换成你想要的测试宽度),然后去PageSpeed的debug日志(通常路径是/var/log/httpd/pagespeed_debug.log)里找相关记录:- 如果日志显示
Skipping image X: already smaller than requested size,说明图片本身尺寸已经小于你要求的尺寸,无需调整 - 如果显示
Filter resize_images not applied to WebP image,那就是版本或配置层面的问题
- 如果日志显示
检查配置是否存在冲突
打开ModPagespeed配置文件(一般是/etc/httpd/conf.d/pagespeed.conf),确认:- 没有
PageSpeed DisableFilters resize_images这类禁用规则 - 明确将
resize_images、recompress_webp、convert_jpeg_to_webp列在EnableFilters中,不要依赖默认过滤组 - 没有把
PageSpeed RewriteLevel设置为PassThrough或CoreFilters以外的等级,否则可能遗漏部分滤镜
- 没有
版本兼容性修复
你使用的ModPagespeed 1.13.35.2是2019年的老版本,这个版本对原生WebP的resize支持确实存在已知bug。如果条件允许,建议升级到最新稳定版(当前是1.14.x系列)——Rocky Linux 9可以选择手动编译,或者找第三方源的预编译包,升级后多数WebP相关问题都会被修复。补充WebP处理依赖
因为你是最小化安装的Rocky Linux 9,可能缺失了WebP的处理库。执行以下命令检查:dnf list installed | grep webp如果没有
libwebp和libwebp-devel,先安装依赖:dnf install libwebp libwebp-devel安装完成后重启Apache,再测试resize效果。
确认图片路径未被排除
检查你的WebP图片所在路径是否被PageSpeed Disallow规则排除,同时确认RewriteDomain配置没有错误,避免PageSpeed跳过对这些图片的处理。
额外配置建议
如果是将JPG转WebP后再调整尺寸,你可以尝试在配置里明确滤镜顺序(ModPagespeed会自动处理顺序,但强制声明能避免优先级问题):
PageSpeed EnableFilters convert_jpeg_to_webp, resize_images, recompress_webp;
要是做完这些还是不行,把debug日志里的相关错误信息贴出来,我再帮你细化排查!
备注:内容来源于stack exchange,提问作者Deeh

