proxy_cache_lock_age

Директива `proxy_cache_lock_age` устанавливает предел времени, в течение которого запрос должен ждать освобождения блокировки кэша перед возвратом ответа 504.

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

Описание

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

Когда запрос не находит данные в кэше, и другой запрос для того же содержимого уже обрабатывается, второй запрос будет ждать завершения первого запроса в течение времени, определённого proxy_cache_lock_age. Если первый запрос завершится в этот срок, ожидающий запрос получит кэшированный ответ. Если блокировка не будет снята в течение указанного времени, ожидающий запрос вернёт ошибку 504 Gateway Timeout. Правильная настройка этой директивы позволяет избежать лишней нагрузки на сервер при одновременных частых запросах к одному ресурсу и одновременно оптимизировать время отклика для пользователей.

Чтобы настроить proxy_cache_lock_age, просто определите эту директиву в контекстах http, server или location, указав желаемую длительность. Важно подобрать значение с учётом ожидаемой нагрузки и времени ответа, чтобы избежать возможных проблем с производительностью.

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

location /api {
    proxy_pass http://backend;
    proxy_cache my_cache;
    proxy_cache_lock on;
    proxy_cache_lock_age 5s;
}

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

Если не включить proxy_cache_lock, эта директива не будет иметь эффекта, поскольку механизм блокировки кэша не активирован.

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