ajp_cache_methods
Директива `ajp_cache_methods` указывает HTTP-методы, которые могут кэшироваться при использовании протокола AJP в NGINX.
Описание
Директива ajp_cache_methods определяет, какие HTTP-запросы следует учитывать при кэшировании ответов в контексте протокола AJP. По умолчанию она кэширует ответы для методов GET и HEAD. Если пользователь укажет ajp_cache_methods POST, кэширование по-прежнему будет происходить для запросов GET и HEAD, но ответы на запросы POST также будут кэшироваться, если они соответствуют критериям, заданным другими директивами кэширования. Эта директива важна, поскольку позволяет тонко настраивать, когда и какие ответы сохраняются в кэше, тем самым оптимизируя производительность и использование ресурсов.
Директива может принимать несколько методов в качестве аргументов, позволяя пользователям указать, хотят ли они кэширование для методов GET, HEAD и POST одновременно. Однако поведение кэширования для GET и HEAD отключить нельзя. Это гарантирует, что поведение по умолчанию соответствует типичным практикам веб-серверов, где эти два метода обычно возвращают кэшируемый контент. Важно осторожно использовать эту директиву, особенно с 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;
}
}
}Если указан только POST, кэширование для GET и HEAD всё равно будет происходить.
Следует проявлять осторожность при кэшировании ответов POST, так как они могут быть не идемпотентными, что потенциально приведёт к некорректному поведению приложения.
Убедитесь, что ваши политики кэширования соответствуют ожидаемому поведению вашего приложения, особенно для запросов, изменяющих состояние.