我今天花了一个小时左右诊断这个问题,尽管该解决方案可能对其他人有帮助。
Apache 的响应标头为 webp 和 avif 文件提供默认过期时间(60 秒),即使我已将以下内容添加到我的 conf-enabled/expires.conf 文件中。
ExpiresByType image/webp "access plus 1 month"
ExpiresByType image/avif "access plus 1 months"
相同的设置也适用于其他 mime 类型。
我还检查了 Apache 的其他缓存相关设置,但没有任何更改影响随这些文件类型返回的标头。
Apache2.4 在 Ubuntu 20.04 服务器上运行。
服务器的 /etc/mime.types 文件中缺少 webp 和 avif 文件(作为相对现代的格式)。如果没有基本 mime 类型,Apache 会忽略设置的 ExpiresByType 指令。
要修复,请执行以下任一操作(或同时执行这两项操作):
image/webp webp
image/avif avif
AddType image/webp .webp
AddType image/avif .avif
两者都可以解决问题,但第一个解决方案在系统范围内添加文件类型,而第二个解决方案仅影响 Apache。
Ubuntu Linux 服务器 20.04 的文件位置正确。