Varnish (now Vinyl Cache)
An HTTP reverse-proxy cache you configure in VCL. The open-source project renamed itself to Vinyl Cache in 2026 after a trademark fight, and Varnish Software put the old name on its own downstream build.
Full Explanation
Varnish sits in front of your origin and keeps HTTP responses in memory, so most requests never reach your backend. You configure it in VCL, which is a small language rather than a config file, so you can put real logic at each stage of a request. It's been a staple of self-hosted caching tiers since 2006.
The names are a mess since 2026. Varnish Software is a company; it owns the trademarks and sells Varnish Enterprise. The open-source project was always separate from it, and after a trademark dispute it renamed itself to Vinyl Cache, about twenty years after the first release. Varnish Software then took the Varnish Cache name for its own downstream build.
So Vinyl Cache is the old project, same codebase, same maintainers. Varnish Cache is now a downstream build the company controls. Same shape as MySQL and MariaDB, with the sides swapped: the independent project changed names, the company kept the original.
Your VCL still works. The packaging moved: varnish became vinyl-cache, varnishlog became vinyllog, /etc/varnish became /etc/vinyl-cache. Check the date on anything you read about Varnish. Before 2026 it's the project that's now Vinyl. After, it could be Vinyl, the new Varnish Cache, or Varnish Enterprise.
Examples
# VCL still looks the same in Vinyl Cache
vcl 4.1;
backend origin {
.host = "origin.example.com";
.port = "80";
}
sub vcl_backend_response {
# Cache for 1 hour, keep stale copies for grace mode
set beresp.ttl = 1h;
set beresp.grace = 24h;
}
sub vcl_deliver {
# Expose hit/miss so you can debug from curl
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
# Package and path renames (Arch Linux example)
# package varnish -> vinyl-cache
# config /etc/varnish -> /etc/vinyl-cache
# state /var/lib/varnish -> /var/lib/vinyl-cache
# logging varnishlog -> vinyllog
# service varnish.service -> vinyl-cache.service
# user/group varnish -> vinyl
# Check which one you are actually running
$ vinyllog -V || varnishlog -V
Frequently Asked Questions
An HTTP reverse-proxy cache you configure in VCL. The open-source project renamed itself to Vinyl Cache in 2026 after a trademark fight, and Varnish Software put the old name on its own downstream build.
# VCL still looks the same in Vinyl Cache
vcl 4.1;
backend origin {
.host = "origin.example.com";
.port = "80";
}
sub vcl_backend_response {
# Cache for 1 hour, keep stale copies for grace mode
set beresp.ttl = 1h;
set beresp.grace = 24h;
}
sub vcl_deliver {
# Expose hit/miss so you can debug from curl
if (obj.hits > 0) {
set resp.http.X-Cache = "HIT";
} else {
set resp.http.X-Cache = "MISS";
}
}
# Package and path renames (Arch Linux example)
# package varnish -> vinyl-cache
# config /etc/varnish -> /etc/vinyl-cache
# state /var/lib/varnish -> /var/lib/vinyl-cache
# logging varnishlog -> vinyllog
# service varnish.service -> vinyl-cache.service
# user/group varnish -> vinyl
# Check which one you are actually running
$ vinyllog -V || varnishlog -V
Related CDN concepts include:
- Cache Key — A unique identifier generated from request attributes that determines whether requests can share a cached …
- stale-while-revalidate — Allows caches to serve stale content immediately while fetching a fresh copy in the background. …
- ESI (ESI) — Edge Side Includes. A markup language for assembling pages from fragments at the CDN edge. …
- Origin — The server (or group of servers) that holds the authoritative version of your content. When …
- PURGE — Removing cached content from CDN edges before its TTL expires. Can target a single URL, …
- TTL (Time To Live) (TTL) — How long a cached response is considered fresh before it must be revalidated or re-fetched. …