我使用 Apache 2.2mod_proxy到一些第三方 HTTP 服务器。
由于它没有发送任何Cache-Control
标题,我想为响应代码 200 添加 1 天,为 404 添加 5 分钟,为任何其他响应代码添加 0。
所以我会这样做:
SetEnvIf HttpResponseCode "200" rc_200
SetEnvIf HttpResponseCode "404" rc_404
Header set "Cache-Control" "private, max-age=0"
Header set "Cache-Control" "public, max-age=86400" env=rc_404
Header set "Cache-Control" "public, max-age=86400" env=rc_200
答案1
我知道我的回答可能来得太晚了,但对于任何想要根据条件(更具体地说是根据 HTTP 状态代码的条件)在 HTTP 响应中设置标头的人来说,它都是有用的。
你可以找到这里这种配置的一个示例(示例#8):
- 为 HTTP 状态代码为 200 的响应附加缓存标头:
Header append Cache-Control s-maxage=600 "expr=%{REQUEST_STATUS} == 200"
它可以扩展以支持基于请求/响应环境变量的任何条件。
此示例适用于 Apache httpd v2.4:我怀疑它不适用于 httpd v2.2...