{"type":"post","id":"we-just-shipped-support-for-the-ugliest-part-eca159","slug":"we-just-shipped-support-for-the-ugliest-part-eca159","title":"We just shipped support for the ugliest part of HTTP: Vary","description":"Cloudflare’s reported HTTP Vary support changes the feasibility of serving multiple representations from one cached URL.","retrieval_nugget":"Cloudflare’s reported HTTP Vary support changes the feasibility of serving multiple representations from one cached URL.","published_at":"2026-09-28","updated_at":"2026-09-28","record_date":"2026-09-28","date_kind":"published_at","topics":[],"source_urls":["https://simonwillison.net/2026/Sep/23/hn-49823961"],"schema_version":"newruntime-agent-readable-v0.2","stable_id":"post:we-just-shipped-support-for-the-ugliest-part-eca159","status":"published","visuals":[],"editorial_provenance":{"schema_version":"newruntime-editorial-copy-v1","content_status":"source_grounded_final","final_copy_sha256":"sha256:c71f4e92f232e451aebd4174b1185eda7cce764804a52bf805be0e607a0b868f","reviewed_at":"2026-09-28T06:01:07.364Z","source_evidence_count":1,"verified_claim_count":3,"site_analysis_schema_version":"newruntime-site-analysis-v1","site_object_kind":"field_note","observed_fact_count":3,"implication_count":2,"watch_condition_count":2,"related_record_count":0},"analysis":{"schema_version":"newruntime-site-analysis-v1","object_kind":"field_note","thesis":"Cloudflare’s reported HTTP Vary support changes the feasibility of serving multiple representations from one cached URL.","observed_facts":[{"text":"The supplied source describes a case where `Accept: text/html` receives HTML while other user agents receive JSON or another format.","source_urls":["https://simonwillison.net/2026/Sep/23/hn-49823961"]},{"text":"The supplied source says Cloudflare had ignored the Vary header except for images, risking a cached JSON response being served to a client expecting HTML.","source_urls":["https://simonwillison.net/2026/Sep/23/hn-49823961"]},{"text":"The supplied source identifies the item as a newly shipped Cloudflare support change for HTTP Vary caching.","source_urls":["https://simonwillison.net/2026/Sep/23/hn-49823961"]}],"mechanism":"The mechanism is that `Vary` tells a cache which request-header dimensions distinguish valid response variants.","why_now":"Why now is that a previously avoided deployment pattern can be reconsidered for sites behind Cloudflare, including interfaces where browsers, automated clients, and agents consume different formats.","implications":["The first implication is that teams can evaluate content negotiation alongside explicit format URLs without assuming Cloudflare caching will collapse those variants.","The change expands architectural choice, but does not establish that one-URL content negotiation is preferable to explicit URLs such as `.json` endpoints."],"evidence_boundary":"The evidence boundary is that the supplied source is a commentary on the release, not Cloudflare’s implementation documentation, configuration guidance, or performance analysis.","watch_conditions":["The first watch condition is whether Cloudflare publishes precise cache-key, header-support, purge, and migration semantics for Vary-enabled responses.","Watch for production reports covering variant correctness, cache-hit behavior, and interactions with existing Cloudflare rules."],"related_records":[],"new_branch_reason":"This starts a distinct analytical record because no prior New Runtime record was supplied, and the event concerns a specific shift in CDN cache semantics rather than a documented continuation of another record."},"editor":{"role":"editor","name":"Andrey Reshetnikov","profile":"https://newruntime.com/owner-profile.md","profile_json":"https://newruntime.com/owner-profile.json","same_as":["https://www.linkedin.com/in/reshetnikov1/","https://t.me/lapetuse"]},"routes":{"html":"https://newruntime.com/posts/we-just-shipped-support-for-the-ugliest-part-eca159/","markdown":"https://newruntime.com/posts/we-just-shipped-support-for-the-ugliest-part-eca159.md","json":"https://newruntime.com/posts/we-just-shipped-support-for-the-ugliest-part-eca159.json"},"next_reads":[{"type":"collection","path":"/posts/","url":"https://newruntime.com/posts/","title":"Field Notes","reason":"Open the latest editorial analysis.","media_type":"text/html","json_url":"https://newruntime.com/posts.json"},{"type":"collection","path":"/source-ledger.json","url":"https://newruntime.com/source-ledger.json","title":"Source Ledger","reason":"Inspect the public source evidence graph.","media_type":"application/json"}]}
