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

Every experimentation platform’s naive integration destroys delivery performance: per-user page variations mean per-user cache keys, and your hit ratio funds the experiment. The edge-native patterns invert the trade, keeping experiments honest and caches hot simultaneously.

The core pattern: assign at edge, key by variant

Move assignment into the edge layer: a lightweight function hashes a stable identifier (or mints a cookie on first touch) into bucket assignments, then the cache key includes only the variant identifier, not the user. Ten experiments with two arms each is at most a bounded set of page variants, each fully cacheable and shared across its entire bucket population. The cache fragments by design, into countable, warm shards, rather than by accident into per-user ice.

Consistency and the flicker problem

Client-side testing tools earned their reputation for flicker: the page renders, then JavaScript swaps the variant. Edge assignment kills flicker structurally, the correct variant arrives as the response, and solves cross-page consistency (the cookie travels) and first-visit assignment (minted before the first byte of HTML). The engineering care points: deterministic hashing so assignment survives statelessness, bucket-proportion changes handled without reshuffling existing users, and the assignment cookie excluded from keys of unvaried content (the Vary discipline, again).

The statistical integrity note experimenters will ask about: edge assignment changes where randomization happens, not its validity, deterministic hashing over stable identifiers yields assignment as sound as any server-side bucketer, with the same caveats (identifier stability across devices, bot filtering before analysis, our fingerprinting article’s classifications feeding the exclusion list). What edge assignment adds is exposure fidelity: users receive their variant on the first byte, eliminating the client-side era’s contaminated exposures (control users who glimpsed treatment before the swap). Cleaner exposure means smaller measured variance and honester effect sizes, which is to say the delivery layer quietly improved your science while it was rescuing your hit ratio. Infrastructure and methodology turn out to be the same discipline at sufficient depth.

Personalization’s harder version

Experiments have bounded arms; personalization tempts unbounded variation, and unbounded variation is uncacheable by definition. The sustainable architectures bound it: segment-level personalization (dozens of audiences, each a cacheable variant) rather than per-user rendering; composition (the ESI article) isolating the truly personal islands from the cached shell; and edge-side data injection, cached page plus a small per-user payload stitched at the edge. Each pattern is a different point on the same trade curve between individuality and hit ratio; the sin is not choosing a point knowingly.

In practice

Migrate assignment to the edge for your highest-traffic experiment first and measure the trifecta: flicker eliminated (CLS and LCP cohorts), hit ratio recovered, and statistics unchanged (assignment determinism verified). Cap concurrent page-level experiments with a variant-count budget, cache arithmetic, not experimentation appetite, sets the ceiling, and put variant-shard hit ratios on the dashboard so the cost of every new test is visible to the team proposing it.

Edge-experimentation migrations are a standing engagement here: assignment design, key budgets, the trifecta measured.

Get the free assessmentMore analysis