proxy_cache_key
Директива `proxy_cache_key` задаёт ключ, используемый для кэширования проксированных ответов.
Описание
Директива proxy_cache_key определяет, как NGINX формирует ключ кэша для ответов, хранящихся в прокси-кэше. По умолчанию она объединяет протокол, хост, URI и строку запроса, чтобы создать уникальный идентификатор кэша для каждого запроса. Настраивая ключ кэша, вы можете изменить поведение кэширования и получить более тонкий контроль над тем, что сохраняется в кэше. Ключ может использовать переменные, что позволяет динамически генерировать ключ на основе параметров запроса, заголовков или других контекстных данных.
Синтаксис proxy_cache_key позволяет определить пользовательскую строку ключа, которая может состоять из статического текста и переменных. Например, можно включить $request_uri, $remote_addr и другие переменные, чтобы различать кэшируемый контент. Такая гибкость позволяет хранить несколько версий ответа на основе сессий пользователей или других критериев, повышая возможности вашего веб-кэша. Обратите внимание, что изменение ключа кэша требует хорошего понимания кэшируемого содержимого и того, как пользователи с ним взаимодействуют, чтобы избежать ненужных промахов кэша или перезаписи.
Пример конфига
http {
proxy_cache_path /tmp/cache levels=1:2 keys_zone=my_cache:10m;
server {
location / {
proxy_pass http://backend;
proxy_cache my_cache;
proxy_cache_key "$scheme$request_method$host$request_uri";
}
}
}Убедитесь, что создаваемый пользовательский ключ кэша не приводит к чрезмерной фрагментации кэша, поскольку слишком детализированные ключи могут снизить частоту попаданий в кэш.
Если вы используете переменные в ключе кэша, будьте внимательны к последствиям для производительности, так как лишняя сложность может добавить накладные расходы при обращениях к кэшу.