ajp_cache_methods

Директива `ajp_cache_methods` указывает HTTP-методы, которые могут кэшироваться при использовании протокола AJP в NGINX.

Синтаксисajp_cache_methods [GET | HEAD | POST];
По умолчаниюajp_cache_methods GET HEAD;
Контекстhttp, server, location
Аргументы1+

Описание

Директива 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, так как они могут быть не идемпотентными, что потенциально приведёт к некорректному поведению приложения.

Убедитесь, что ваши политики кэширования соответствуют ожидаемому поведению вашего приложения, особенно для запросов, изменяющих состояние.

← Ко всем директивам