ajp_cache_use_stale

Директива `ajp_cache_use_stale` управляет тем, следует ли использовать устаревшие кэшированные ответы в определённых ситуациях при проксировании запросов через AJP.

Синтаксисajp_cache_use_stale error timeout;
По умолчаниюnone
Контекстhttp, server, location
Аргументы1+

Описание

Директива ajp_cache_use_stale, при использовании в конфигурациях NGINX, определяет, в каких случаях устаревшие (неактуальные) кэшированные ответы могут быть отданы клиентам в ожидании свежего ответа от upstream server. Эта директива может значительно улучшить пользовательский опыт за счёт снижения задержек и повышения устойчивости при кратковременных сбоях или замедлениях на бэкенд-сервисах. Она принимает один или несколько аргументов, которые задают условия, при которых может быть выдано устаревшее содержимое. Типичные условия включают ситуации вроде ответа с ошибкой от upstream server, таймаута при запросе к upstream или других указанных ошибок.

Например, если включён параметр timeout, то каждый раз, когда запрос к upstream превышает настроенный таймаут, NGINX может вместо возврата ошибки клиенту отдать ранее кэшированный ответ. Такое поведение даёт большую гибкость в том, как прокси реагируют на разные сценарии, и помогает минимизировать перебои в пользовательском опыте. Директиву можно точечно настроить, указав несколько условий, что обеспечивает тонкий контроль над поведением кэша в зависимости от эксплуатационных требований.

Директива действует в разных контекстах, включая http, server и location, обеспечивая гибкость конфигурации на различных уровнях архитектуры приложения. Стратегическое разрешение выдачи устаревших ответов позволяет разработчикам оптимизировать производительность, особенно в сценариях высокой нагрузки, где непрерывность сервиса имеет первостепенное значение.

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

http {
    ajp_cache_path /var/cache/ajp levels=1:2 keys_zone=my_cache:10m;
    server {
        listen 80;
        location / {
            ajp_pass my_backend;
            ajp_cache my_cache;
            ajp_cache_use_stale error timeout;
        }
    }
}
⚠

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

⚠

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

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