proxy_cache_lock

Директива `proxy_cache_lock` включает сериализацию запросов к одному и тому же ресурсу при отсутствии его в кэше, чтобы снизить нагрузку на вышестоящий сервер.

Синтаксисproxy_cache_lock on | off;
По умолчаниюoff
Контекстhttp, server, location
Аргументыflag

Описание

Когда proxy_cache_lock установлен в on, NGINX будет использовать механизм блокировки, чтобы предотвратить отправку нескольких одновременно выполняющихся запросов к вышестоящему серверу для одного и того же ресурса, отсутствующего в кэше. Вместо этого первый пришедший запрос получит ресурс, а последующие будут ждать завершения первого запроса, чтобы затем обслуживать содержимое из кэша, как только оно станет доступно.

Эта директива особенно полезна для повышения производительности и эффективности веб‑приложений, которые зависят от бэкенд‑сервисов, особенно в сценариях, когда промахи кэша могут привести к резкому всплеску запросов к вышестоящим серверам. Включив proxy_cache_lock, NGINX минимизирует нагрузку на бэкенд‑серверы и снижает вероятность их перегрузки повторными запросами к одному и тому же ресурсу.

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

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

http {
    proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m max_size=1g;
    server {
        location / {
            proxy_pass http://backend;
            proxy_cache my_cache;
            proxy_cache_lock on;
        }
    }
}

Включение proxy_cache_lock может привести к задержкам при последующих запросах, пока не завершится первый запрос.

Эту директиву следует использовать с осторожностью при низких настройках TTL (Time-To-Live) кэша, так как это может привести к увеличению времени ожидания в условиях высокого трафика.

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