demo · v141
key-order & except
No-Vary-Search has three directives that interact in non-obvious ways: params (ignore these), except (ignore everything except these), and key-order (param ordering doesn't matter). This concept normalises any URL pair against your chosen header so you can verify whether they'll hit the same cache entry.
Pick a preset header or write your own, then enter two URLs:
the response header
// All three directives, combined
No-Vary-Search: key-order, params=("fbclid" "gclid"), except=()
// Common patterns
No-Vary-Search: params=("utm_source" "utm_medium" "utm_campaign" "utm_term" "utm_content")
No-Vary-Search: except=("v") // only "v" matters; ignore everything else
No-Vary-Search: key-order // ?a=1&b=2 and ?b=2&a=1 are the same
why this angle
The three directives reflect three different real-world patterns. params is straightforward — list the tracking params to drop. except is for situations where you want a strict allowlist: an API endpoint where only id and v are meaningful, everything else is noise. key-order matters for client-side libraries that serialise objects to query strings in unpredictable orders. The interactive comparator lets you check intuition against the spec.