fastcgi_cache_background_update
Директива `fastcgi_cache_background_update` позволяет выполнять обновления кэша в фоновом режиме, пока текущий ответ обслуживается. — NGINX HTTP Core
Описание
Директива `fastcgi_cache_background_update` — это логический параметр, который определяет, будет ли NGINX обновлять закэшированный FastCGI-контент в фоновом режиме, если контент при доступе устарел. При значении `on` это позволяет одновременно отдавать существующий закэшированный ответ, в то время как выполняется новый запрос для получения обновлённого содержимого, что особенно полезно при высокой нагрузке, когда ожидание обновления кэша может приводить к задержкам и увеличению времени загрузки. Это означает, что пользователи продолжат получать кэшированную версию, пока потенциально продолжительный запрос к бэкенду обрабатывается в фоне. Напротив, если директива установлена в `off` (по умолчанию), пользователи, запрашивающие устаревшие кэшированные ответы, будут вынуждены ждать выполнения нового запроса прежде чем получить обновлённую версию. Это менее эффективно с точки зрения пользовательского опыта и использования ресурсов. Директива может применяться в контекстах `http`, `server` или `location`, что даёт гибкость в управлении поведением кэша в зависимости от потребностей приложения или конкретных маршрутов. Правильная настройка этой директивы может значительно повысить отзывчивость и скорость веб-приложений, сильно зависящих от FastCGI-кэширования, так как она минимизирует нагрузку и время ожидания при обновлении кэша. Однако необходимо тщательно продумать стратегию инвалидизации кэша, чтобы не допустить длительной выдачи устаревшего содержимого, особенно в динамических приложениях с частыми изменениями данных.
Пример конфига
location /api {
fastcgi_pass backend;
fastcgi_cache my_cache;
fastcgi_cache_background_update on;
}Убедитесь, что серверная часть может эффективно обрабатывать одновременные запросы, чтобы избежать проблем с производительностью.
Будьте осторожны с настройками времени кэширования, чтобы предотвратить подачу устаревших данных на неопределённый срок.