proxy_cache_background_update
Директива 'proxy_cache_background_update' позволяет обновлять кэш при отдаче устаревших ответов.
Описание
Директива 'proxy_cache_background_update' — это флаг в HTTP-модуле NGINX, который определяет, должен ли NGINX пытаться в фоновом режиме получить свежую версию кэшированного ресурса, когда клиенту отдается устаревшая версия ресурса. По умолчанию, когда поступает запрос к кэшированному элементу, срок действия которого истёк (т.е. он стал устаревшим), NGINX обычно возвращает устаревшую версию ресурса. Если директива 'proxy_cache_background_update' установлена в 'on', NGINX не только отдаёт устаревший ответ, но и инициирует запрос на получение обновлённой версии ресурса в фоновом режиме. Это гарантирует, что следующий запрос клиента к этому ресурсу получит свежую версию с минимальными накладными расходами по производительности.
Это поведение особенно полезно в сценариях, где нужно поддерживать высокую доступность и быстрый отклик, одновременно обеспечивая актуальность кэшированных ресурсов. Например, в средах с частыми изменениями данных эта директива может снизить воспринимаемую задержку для пользователей, при этом эффективно управляя нагрузкой на сервер. Установка директивы в 'off' вернёт стандартное поведение — отдачу устаревших ответов без попыток обновления кэша в фоновом режиме.
Пример конфига
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_background_update on;
}
}
}Если используется вместе с 'proxy_cache_use_stale', убедитесь в правильной настройке, чтобы при фоновых обновлениях не обслуживать непреднамеренно устаревший контент.
Установка этой директивы в 'on' может привести к увеличению нагрузки на бэкенд, если одновременно поступит много запросов к устаревшему контенту.
Имейте в виду, что включение этой функции может привести к большему числу одновременных соединений с бэкенд-сервером во время обновления кэша.