Jenže toto se dělá blbě bez nějakého verzování nebo assets fingerprinting. Pokud nepromítnu nějaké verzování do URL assetů, pak:
a) nastavím must-revalidate, pak ale neušetřím round-trip, nebo
b) nebudu požadovat revalidaci – pak riskuju, že dostanu třeba staré CSS pro nový HTML markup (true story)
Dávat verzování do URL sice není úplně ideální, ale řeší mi to tento problém. Nemusím vyžadovat revalidaci a klient může třeba následující rok brát CSSko bez obav z cache a nemusí se serveru na nic ptát. Jakmile CSSko aktualizuju, změní se jeho URL a klient si stáhne novou verzi. Jediný problém s tímto mechanismem je, že zbytečně zůstává u klienta stará verze v cache. Bylo by fajn, kdyby nová verze vyhodila z cache všechny staré. (Hmm, možná to půjde ohackovat přes pushnutí staré verze s expires v minulosti, ale i pokud to bude fungovat (nejsem si jistý), přinese to různé praktické problémy…)