Z toho jsem ale nevyčetl, jestli prohlížeč může/musí/nesmí odmítnout soubor, který má už v cache bez must-revalidate.
Ano, tak jako tak je to potřeba udělat správně, ale pokud na tom bude záviset invalidace cache, jsou nároky vyšší. Pokud mi na tom nezávidí invalidace cache, prostě se postarám o to nejdůležitější (blokující prvky jako CSS a JS a případně některé důležité obrázky) a zbytek až tak moc řešit nemusím. A pokud na něco zapomenu, nenastane takový problém.
Nemusí se verzovat celý web a ani Play! (nebo spíš SBT Web) ani RoR to tak nedělají. Typicky se přidává hash do cesty.
Ano, řešilo by se tím mazání starých verzí z cache, ale za ty problémy s tím spojené to IMHO nebude stát. Hádám, že se spíše reálně dočkáme podpory invalidace starých verzí souboru v HTTP/3, třeba hlavičkou Fingerprint-convention, která by specifikovala pořadí fingerprintu a původního názvu souboru. (Různé frameworky to pojmenovávají různě – soubor global.css bude třeba global-908e25f4bf641868d8683022a5b62f54.css v RoR, ale 908e25f4bf641868d8683022a5b62f54-global.css v Play!. Těch možností asi až tolik není, možná by stačily dvě nebo tři varianty.)