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;
        }
    }
}

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

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

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