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