demo · v141
Cache Key Tester
The No-Vary-Search response header tells Chrome's HTTP cache to ignore certain query parameters when computing the cache key. Chrome 141 extends this from the prefetch-only cache to the full HTTP disk cache. Enter two URLs and a header value below — the tester runs the spec algorithm in-browser and tells you whether they'd share a cache entry.
Chrome 141 change
Before Chrome 141,
No-Vary-Search only applied to the prefetch (in-memory) cache, so its benefit vanished across page loads. Chrome 141 brings NVS to the HTTP disk cache — now UTM parameters, affiliate IDs, and A/B tokens no longer create separate cache entries between sessions.
Test two URLs
Enter URLs and a header value, then click above.
Header generator
Build a No-Vary-Search header
Generated header
No-Vary-Search: (choose options above)
Example URL pairs
| Rule | URL A | URL B | Hit? |
|---|
rule reference
# Ignore all query params (treat any variation as the same resource):
No-Vary-Search: params
# Ignore specific params (these never affect cache identity):
No-Vary-Search: params=("utm_source" "utm_medium" "fbclid" "gclid")
# Vary ONLY on specific params (ignore everything else):
No-Vary-Search: params, except=("q" "page")
# Ignore parameter ordering (?a=1&b=2 == ?b=2&a=1):
No-Vary-Search: key-order
# Combine: ignore order AND ignore tracking params:
No-Vary-Search: params=("fbclid"), key-order
how the disk cache uses it
# Server response for /article?id=42&utm_source=newsletter
HTTP/1.1 200 OK
Cache-Control: max-age=3600
No-Vary-Search: params=("utm_source" "utm_medium" "fbclid")
# Chrome 141: the disk cache stores this response
# keyed by: /article?id=42 (utm_* stripped)
# Next request (different session, different utm_*):
# GET /article?id=42&utm_source=twitter
# → Cache HIT from disk — no network round-trip
# Before Chrome 141: miss (the disk cache didn't check NVS)