fastcgi_cache_revalidate

Директива 'fastcgi_cache_revalidate' управляет тем, будет ли NGINX повторно проверять кешированные ответы FastCGI. — NGINX HTTP Core

fastcgi_cache_revalidate
httpserverlocation
Синтаксисfastcgi_cache_revalidate on | off;
По умолчаниюoff
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументыflag

Описание

Директива 'fastcgi_cache_revalidate' в NGINX позволяет более тонко контролировать повторную проверку кешированных ответов от FastCGI-бэкендов. Когда эта директива установлена в 'on', NGINX будет отправлять условные запросы с использованием заголовков 'If-Modified-Since' или 'If-None-Match' на основе кешированного содержимого. Это гарантирует, что если содержимое изменилось на бэкенде, клиент получит обновлённый ответ соответственно. Такое поведение помогает поддерживать кешированное содержимое актуальным, одновременно минимизируя ненужные запросы к бэкенду, что может улучшить производительность в средах с динамическим содержимым, которое не меняется часто. В противоположность этому, когда значение установлено в 'off', NGINX будет отдавать кешированные ответы без запроса к бэкенду на предмет обновлений, что может привести к отдаче устаревшего содержимого, если исходные данные изменились. Директива особенно полезна при работе с содержимым, частота обновления которого непредсказуема, так как она находит баланс между обслуживанием из кеша и обеспечением того, чтобы пользователи получали наиболее свежую версию ответа, не теряя преимуществ эффективности кеширования.

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

http {
    fastcgi_cache_path /var/cache/nginx/fastcgi_tmp levels=1:2 keys_zone=my_cache:10m;

    server {
        location /fastcgi {
            include fastcgi_params;
            fastcgi_pass backend;
            fastcgi_cache my_cache;
            fastcgi_cache_revalidate on;
        }
    }
}

Убедитесь, что ваше backend FastCGI-приложение поддерживает conditional GET-запросы, чтобы эта директива была эффективной.

Использование этой директивы с очень часто изменяющимся контентом может привести к чрезмерному количеству backend-запросов, нивелируя преимущества кэширования.