INTEGRITY Dokumentace

Jak funguje mezipaměť

Workers byly navrženy a vytvořeny nad globální sítí Cloudflare tak, aby vývojářům umožnily přímo pracovat s cache Cloudflare. Cache může poskytovat dočasné úložiště lokální pro dané datové centrum, což je praktický způsob, jak často přistupovat ke statickému nebo dynamickému obsahu.

Tím, že vývojářům umožňují zapisovat do cache, poskytují Workers způsob, jak přizpůsobit chování cache v CDN Cloudflare. Chcete-li se dozvědět více o výhodách ukládání do cache, přečtěte si článek v Learning Center o Co je ukládání do mezipaměti?.

Cloudflare Workers se spouštějí před cache, ale lze je využít i k úpravě assetů poté, co jsou vráceny z cache. Úprava assetů vrácených z cache umožňuje podepisovat nebo personalizovat odpovědi a zároveň snižuje zátěž origin serveru a latenci pro koncového uživatele tím, že se assety doručují z blízké lokality.

Interakce s Cloudflare Cache

Koncepčně existují dva způsoby, jak pomocí Workeru pracovat s Cache Cloudflare:

Vymazání jednoho souboru z cache uložené workerem

Pokud pro vymazání prostředků uložených Workerem v mezipaměti používáte vymazání jednoho souboru, nevymazávejte URL adresu koncového uživatele. Místo toho vymažte URL adresu, která je uvedena v fetch požadavek. Máte například Worker, který běží na https://example.com/hello a tento Worker vytváří fetch požadavek na https://notexample.com/hello.

Pokud jde o mezipaměť, prostředek v fetch požadavek (https://notexample.com/hello) je prostředek, který se ukládá do mezipaměti. Chcete-li ho vyčistit, musíte vyčistit https://notexample.com/hello.

Vymazávání URL adresy koncového uživatele, https://example.com/hello, nebude fungovat, protože to není URL, kterou vidí mezipaměť. Ve svém Workeru musíte ověřit, kterou URL skutečně načítáte, abyste mohli vyčistit správný prostředek.

V předchozím příkladu https://notexample.com/hello neprochází přes proxy Cloudflare. Pokud https://notexample.com/hello byl proxován (s oranžovým mrakem) přes Cloudflare, musíte vlastnit notexample.com a vyprázdněte https://notexample.com/hello z notexample.com zóna.

Pro lepší pochopení příkladu se podívejte na následující diagram:

flowchart TD
accTitle: Single file purge  assets cached by a worker
accDescr: This diagram is meant to help choose how to purge a file.
A("You have a Worker script that runs on <code>https://</code><code>example.com/hello</code> <br> and this Worker makes a <code>fetch</code> request to <code>https://</code><code>notexample.com/hello</code>.") --> B(Is <code>notexample.com</code> <br> an active zone on Cloudflare?)
    B -- Yes --> C(Is <code>https://</code><code>notexample.com/</code> <br> proxied through Cloudflare?)
    B -- No  --> D(Purge <code>https://</code><code>notexample.com/hello</code> <br> from the original <code>example.com</code> zone.)
    C -- Yes --> E(Do you own <br> <code>notexample.com</code>?)
    C -- No --> F(Purge <code>https://</code><code>notexample.com/hello</code> <br> from the original <code>example.com</code> zone.)
    E -- Yes --> G(Purge <code>https://</code><code>notexample.com/hello</code> <br> from the <code>notexample.com</code> zone.)
    E -- No --> H(Sorry, you can not purge the asset. <br> Only the owner of <code>notexample.com</code> can purge it.)

Vymažte prostředky uložené pomocí Cache API

Assets uložené v mezipaměti prostřednictvím Cache API operace lze vymazat několika způsoby:

Cache na edge oproti cache v prohlížeči

Cache prohlížeče se řídí pomocí Cache-Control hlavička odeslaná v odpovědi klientovi (tato Response instance vrácená z handleru). Workers mohou přizpůsobit chování mezipaměti prohlížeče nastavením této hlavičky v odpovědi.

Mezi další způsoby ovlivnění mezipaměti Cloudflare, které tato dokumentace nepopisuje, patří Page Rules a nastavení cache Cloudflare. Více informací najdete v Jak přizpůsobit mezipaměť Cloudflare pokud se chcete vyhnout psaní JavaScriptu, a přesto si zachovat alespoň částečnou míru kontroly.

fetch

V kontextu Workers je fetch poskytovaná runtime komunikuje s cache Cloudflare. Nejprve fetch ověří, zda URL neodpovídá jiné zóně. Pokud ano, projde cache (nebo Worker) této zóny. V opačném případě projde cache vlastní zóny, a to i tehdy, pokud URL patří webu mimo Cloudflare. Nastavení cache na fetch automaticky uplatňuje pravidla ukládání do cache podle vašeho nastavení Cloudflare. fetch neumožňuje upravovat ani zkoumat objekty před tím, než se dostanou do mezipaměti, ale umožňuje upravit způsob jejich ukládání do mezipaměti.

Když odpověď naplní mezipaměť, hlavička odpovědi obsahuje CF-Cache-Status: HIT. Že se objekt pokouší o cachování, poznáte podle výskytu CF-Cache-Status vůbec.

Tento šablona ukazuje způsoby, jak upravit chování mezipaměti Cloudflare pro daný požadavek pomocí fetch.

Cache API

Cache API si lze představit jako dočasné úložiště klíč-hodnota, kde Request objekt (přesněji řečeno URL požadavku) je klíč a Response je hodnota.

Pro Cloudflare Cache jsou k dispozici dva typy cache namespaces:

Kdy použít Cache API:

Tento šablona ukazuje způsoby použití cache API. Limity cache API najdete v Limity.