← Cloudflare Cache / cache / concepts
Revalidace
Stale-while-revalidate
Když prostředku v mezipaměti vyprší platnost, Cloudflare použije stale-while-revalidate direktiva v Cache-Control určit, zda může pokračovat v podávání neaktuální verze assetu a zároveň načítat aktuální kopii z originu. Pokud je direktiva přítomna a asset se nachází v povoleném okně neaktuálnosti, Cloudflare podává návštěvníkům expirovaný obsah a revaliduje jej na pozadí. Použitím hlaviček jako If-Modified-Since a ETag, Cloudflare ověří platnost obsahu, aniž by ho musel celý znovu stahovat, čímž se snižuje provoz na origin serveru.
Asynchronní opětovné ověření
Revalidace probíhá zcela asynchronně. Když vyprší platnost prostředku v mezipaměti a stale-while-revalidate je nastavena, první požadavek, který přijde po vypršení platnosti, spustí revalidaci na pozadí. Tento požadavek okamžitě obdrží zastaralý obsah se stavem AKTUALIZACE stav místo blokování, dokud origin neodpoví. Všechny následující požadavky rovněž obdrží neaktuální obsah se stavem UPDATING stav, dokud origin neodpoví. Jakmile se revalidace dokončí, další požadavky obdrží aktuální obsah se stavem HIT stav.
Pokud je zastaralý obsah stále platný, Cloudflare nastaví nové TTL. Pokud se obsah změnil, origin server poskytne aktuální obsah, který nahradí ten starý.
Řízení chování u zastaralého obsahu
Cloudflare během revalidace doručí zastaralý obsah pouze tehdy, pokud origin obsahuje stale-while-revalidate direktiva ve své Cache-Control hlavičku. Bez této direktivy návštěvníci čekají na odpověď origin serveru, než obdrží obsah.
Pokud váš origin server nastaví stale-while-revalidate ale chcete toto chování přepsat, můžete poskytování zastaralého obsahu vypnout pomocí Zobrazovat zastaralý obsah během revalidace nastavení v Cache Rules.
Direktivy, které deaktivují stale-while-revalidate
Když Origin Cache Control je povolena, platí následující Cache-Control direktivy brání Cloudflare v poskytování zastaralého obsahu podle RFC 9111 §4.2.4 ↗:
must-revalidate: zakazuje doručování neaktuálního obsahu, mezipaměť musí nejprve provést revalidaci s originem.proxy-revalidate: stejné jakomust-revalidate, ale platí pouze pro sdílené cache (jako je Cloudflare).s-maxage: implikujeproxy-revalidatesémantiku, takže sdílené cache nemohou poskytovat neaktuální obsah.no-cache: vyžaduje revalidaci před doručením jakékoli uložené odpovědi.
Pokud je některá z těchto direktiv přítomna společně s stale-while-revalidate, Cloudflare neaktuální obsah nedoručí, požadavky vrátí EXPIRED místo UPDATING.
Úplný seznam dostupných direktiv a chování při vypnuté funkci Origin Cache Control najdete v části Direktivy Cache-Control.
Chytrá revalidace směrem k uživatelům
Když jsou obě Last-Modified ↗ a Etag ↗ hlavičky v odpovědi origin serveru chybí, Smart Edge Revalidation použije čas uložení objektu do mezipaměti globální sítě Cloudflare jako Last-Modified hlavičky. Když prohlížeč odešle Cloudflare revalidační požadavek pomocí If-Modified-Since nebo If-None-Match, naše globální síť dokáže na tyto revalidační dotazy odpovědět pomocí Last-Modified hlavičku vygenerovanou funkcí Smart Edge Revalidation. Naše globální síť tak zajistí efektivní revalidaci, i když origin tyto hlavičky neodešle.