scgi_cache_key

Директива `scgi_cache_key` устанавливает ключ кэша для SCGI-ответов в NGINX. — NGINX HTTP Core

scgi_cache_key
httpserverlocation
Синтаксисscgi_cache_key string | variable;
По умолчаниюnone
Контекстhttp, server, location
МодульNGINX HTTP Core
Аргументы1

Описание

Директива `scgi_cache_key` используется для указания пользовательского ключа кэша для SCGI (произносится 'sggi') ответов в NGINX. По умолчанию NGINX использует сгенерированный ключ, основанный на URI запроса и других параметрах, чтобы хранить данные ответа в SCGI-кэше. Возможность настраивать ключ кэша позволяет оптимизировать производительность кэша, обеспечивая использование в генерации ключа определённых аспектов запроса или переменных, что потенциально снижает число промахов кэша и улучшает время отклика. Эта директива принимает один аргумент, который может быть строкой или переменной, определяющей способ формирования ключа. Например, вы можете включить в ключ определённые параметры запроса или опустить некоторые части URI, которые не требуются для различения кэша. Тщательно продуманный ключ кэша позволяет оптимизировать, какие ответы сохраняются в кэше на основе разных критериев, что приводит к более эффективному использованию кэшированного контента. Важно отметить, что поскольку кэширование напрямую влияет на производительность и эффективность вашего сервера, ключ следует составлять обдуманно, чтобы избежать непреднамеренных коллизий в кэше. Директива `scgi_cache_key` действительна в контекстах `http`, `server` и `location`, что позволяет применять её на разных уровнях конфигурации. Если не указана, NGINX вернётся к своему внутреннему механизму генерации ключей кэша по умолчанию, который может быть не столь эффективным для некоторых сценариев использования.

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

location /api {
    scgi_pass backend;
    scgi_cache my_cache;
    scgi_cache_key "$request_uri$request_method";
}

Убедитесь, что сформированный ключ достаточно уникален, чтобы предотвратить коллизии в кэше.

Остерегайтесь подстановки переменных; в некоторых случаях переменные могут быть недоступны в момент генерации ключа.

Изменение шаблона ключа кэша приведёт к недействительности существующих элементов в кэше.