Varnish Cache — reverse-proxy с фокусом на HTTP-кэширование в оперативной памяти. Ставится перед backend'ом (nginx/Apache + PHP-app), кэширует ответы по HTTP-заголовкам (Cache-Control, Vary) и отдаёт клиенту при повторных запросах напрямую из RAM. Типовой speedup: 10-100× по latency, 100-1000× по throughput.
Использует собственный язык VCL (Varnish Configuration Language), компилируется в C и загружается в runtime. Пример: `vcl_recv { if (req.url ~ "\.png$") { set req.http.Cookie = ""; }; }` — убрать cookies с запросов на PNG, чтобы кэш работал (иначе Varnish считает каждый запрос уникальным).
Классические use-case: (1) новостной сайт — статьи меняются раз в час, но читаются миллионы раз. Cache HIT ratio 95 %, backend получает 5 % трафика. (2) e-commerce каталог — категории/фильтры кэшируются на 1-5 мин, checkout всегда bypass. (3) API-gateway — кэшировать `/api/v1/products` для `GET`, invalidate по PURGE-запросу из backend'а.
Ограничения: HTTPS Varnish не умеет — надо ставить nginx/hitch перед ним как SSL-terminator. При рестарте кэш теряется (in-memory), нужен «прогрев». Persistent storage через MSE (Massive Storage Engine, коммерческая версия).
Альтернативы: nginx fastcgi/proxy_cache — проще, интегрировано, но без VCL-мощности. Cloudflare — SaaS-эквивалент, edge-cache. Fastly — коммерческий Varnish с CDN. Redis — если кэшируете уровнем ниже HTTP (на уровне запросов к БД).