uwsgi_cache_lock

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

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

Описание

Директива uwsgi_cache_lock используется для включения или отключения блокировки кэша в NGINX при использовании механизма кэширования uWSGI. Когда эта директива установлена в 'on', если выполняется запрос к содержимому, которое в данный момент генерируется, другие запросы к тому же содержимому будут заблокированы до завершения первого запроса. Это помогает уменьшить вероятность дублирующей обработки одного и того же запроса, улучшая использование ресурсов и сокращая время отклика при одновременных запросах. По умолчанию, если директива не задана, кэширование будет происходить без блокировки, что может привести к множественной генерации содержимого, если несколько запросов поступают одновременно.

Эта директива взаимодействует с директивой uwsgi_cache, которая отвечает за определение зоны кэша, используемой для кэширования ответов uWSGI. Установка uwsgi_cache_lock в 'off' позволяет нескольким одновременным запросам к одному и тому же не закэшированному ресурсу выполняться параллельно, что потенциально увеличивает нагрузку на бэкенд приложения. Вы можете задавать эту директиву в контекстах http, server или location, что даёт гибкость в зависимости от вашей стратегии кэширования и архитектуры. Поведение кэша можно дополнительно настроить с помощью других директив кэширования для обеспечения оптимальной производительности в соответствии с требованиями приложения.

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

uwsgi_cache my_cache;
uwsgi_cache_lock on;

location /example {
    uwsgi_pass my_app;
    uwsgi_cache my_cache;
}

Убедитесь, что uwsgi_cache определён для эффективного кэширования перед включением блокировки.

Избегайте включения uwsgi_cache_lock, если ваше приложение может допускать одновременную обработку нескольких запросов.

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