Measured in your browserWe advise on speed. We practice it.Loaded just now · real numbers from this visit, not a lab score.
Page loaded
First byte
DOM ready
First paint
Largest paint
DNS lookup
TLS handshake
Transferred
Saved by compression
Requests

Whether or not you run Varnish, VCL earned its place in delivery education: it exposes the cache’s decision points as programmable states, and engineers who internalize that state machine debug every CDN better, because commercial edges are variations on the same flow with the hooks renamed.

The canonical request flow

A request arrives (recv): normalize it, decide pass or lookup. Lookup consults the cache by the key you shaped: hit serves, miss proceeds to fetch. The backend response arrives (backend_response): here you decide cacheability, TTL, grace, and key adjustments before storage. Deliver runs on the way out: header cleanup, debugging breadcrumbs. Every consequential caching behavior, key design, TTL policy, stale service, request collapsing, attaches to one of these states, which is what makes the model a diagnostic map: symptoms localize to states.

The concepts VCL made explicit

Grace is stale-while-revalidate before the header existed: serve stale within a grace window while fetching fresh. Saint-mode and its descendants are stale-if-error. Hit-for-pass solves a subtle trap: when a fetch proves uncacheable, remember that verdict briefly so subsequent requests bypass the coalescing queue instead of serializing behind it, the fix for the slow-uncacheable-object pileup our collapsing article warned about. These behaviors exist in every serious edge; VCL merely made you configure them consciously.

The pedagogical point generalizes into a hiring and team-building observation: delivery engineering has no standard curriculum, and the state-machine model is the closest thing to one, engineers fluent in it reason correctly about systems they have never operated, because the invariants (keys decide reuse, fetch-phase decides storage, coalescing queues behind first fetch, staleness is a served policy not an accident) hold across implementations. Teams onboarding into serious delivery work do well to make the toy-Varnish afternoon a ritual, and interviewers probing delivery depth do well to walk a candidate through a hit-for-pass scenario: the answer reveals whether caching is a mental model or a checkbox in their history.

Translating to commercial CDNs

Vendor consoles and edge functions are the same hooks wearing product names: request rules map to recv, cache settings to backend_response, response transforms to deliver. When a commercial cache misbehaves, ask the VCL question, in which state did the wrong decision happen?, and the vendor’s debugging surface usually answers it: request-phase (key, pass decisions), fetch-phase (TTL, cacheability), or delivery-phase (headers, variants). Engineers who frame tickets this way get answers in one round trip; vendors recognize the vocabulary.

In practice

Worth an afternoon even for non-Varnish estates: run one locally, put it in front of a toy origin, and step requests through the states with logging on. The exercise permanently upgrades your intuition for every hit-ratio mystery and coalescing anomaly in this series, and it converts CDN documentation from vendor prose into recognizable variations on a machine you have watched run.

Our engineering workshops teach exactly this state-machine curriculum against your own estate’s configs. Intuition, transplanted.

Get the free assessmentMore analysis