ajp_cache_methods

指令 `ajp_cache_methods` 指定在 NGINX 使用 AJP 协议时可以被缓存的 HTTP 方法。

语法ajp_cache_methods [GET | HEAD | POST];
默认值ajp_cache_methods GET HEAD;
上下文http, server, location
参数1+

说明

指令 ajp_cache_methods 定义了在 AJP 协议上下文中应当被考虑用于缓存响应的 HTTP 请求方法。默认情况下,它会缓存 GETHEAD 方法的响应。如果用户指定 ajp_cache_methods POST,则对于 GETHEAD 请求仍然会进行缓存,但对于 POST 请求的响应也会被缓存,前提是它们满足其他缓存指令定义的条件。此指令很重要,因为它允许细化何时以及哪些响应被存储在缓存中,从而优化性能和资源使用。

该指令可以接受多个方法作为参数,允许用户指定是否希望同时为 GETHEADPOST 方法开启缓存。然而,GETHEAD 的缓存行为不能被禁用。这确保了默认行为与典型的 Web 服务器做法一致——这两种方法通常会产生可缓存的内容。使用此指令时需谨慎,尤其是对 POST,因为它通常与改变服务器状态的操作相关,如果把其响应缓存并重复使用,可能导致意外后果。

配置示例

http {
    upstream tomcats {
        server 127.0.0.1:8009;
        keepalive 10;
    }

    server {
        listen 80;

        location / {
            ajp_pass tomcats;
            ajp_cache_methods GET HEAD POST;
        }
    }
}

即使只指定了 POSTGETHEAD 的缓存仍会发生。

对缓存 POST 响应应谨慎,因为它们可能不是幂等的,可能导致应用行为不正确。

确保你的缓存策略与应用的预期行为一致,特别是对于会改变状态的请求。

← 返回所有指令