fastcgi_cache_methods

Директива fastcgi_cache_methods задаёт, какие HTTP-методы должны кэшироваться с помощью FastCGI. — NGINX HTTP Core

fastcgi_cache_methods
httpserverlocation
Синтаксисfastcgi_cache_methods GET | HEAD | POST | ...;
По умолчаниюGET
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1+

Описание

Директива fastcgi_cache_methods используется в конфигурации NGINX, чтобы задавать, какие HTTP-методы (например, GET или POST) будут кэшироваться при использовании FastCGI. По умолчанию NGINX кэширует только ответы на GET-запросы, что подходит для страниц, которые редко меняются и могут обслуживаться напрямую из кэша. Однако в некоторых случаях приложения могут возвращать на POST-запросы ответы, которые выгодно кэшировать для повышения производительности и снижения нагрузки на бэкенд-сервер. Эта директива позволяет администраторам настроить поведение кэширования в соответствии с потребностями приложения. Директива принимает в качестве параметра один или несколько HTTP-методов. Например, указание "GET POST" позволяет кэшировать как GET, так и POST-запросы. Важно учитывать природу запроса и связанного с ним ответа: не все POST-запросы следует кэшировать, так как они часто приводят к изменению состояния. Неправильное кэширование таких запросов может привести к некорректной работе приложения или к тому, что пользователям будет выдаваться устаревший контент. При применении этой директивы её можно размещать в контексте http, server или location, что обеспечивает гибкость конфигурации кэширования в зависимости от требуемой степени детализации управления. Если указанные методы не соответствуют ожидаемому поведению вашего приложения, это может непреднамеренно привести к узким местам в производительности или к сценариям некорректного кэширования.

Пример конфига

location ~ \.php$ {
    fastcgi_pass   backend;
    fastcgi_cache  my_cache;
    fastcgi_cache_methods GET POST;
}

Будьте осторожны при кэшировании ответов на POST, так как они могут изменить состояние приложения.

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

Убедитесь, что бэкенд корректно обрабатывает кэшированные ответы на POST. При необходимости используйте отдельные ключи кэша.