INTEGRITY Dokumentace

Omezení

Tato stránka uvádí scénáře, ve kterých se Workers Caching neuplatňuje, a dále poznámky k tomu, jak souvisí s dalšími cache, které již možná používáte.

Nepodporované scénáře

HTTP metody

Pouze GET a HEAD požadavky jsou ukládány do mezipaměti. POST, PUT, PATCH, DELETE, a další metody vždy váš Worker vyvolají.

GET a HEAD pro stejnou URL sdílejí jeden záznam v cache. HEAD požadavek, který přijde do studené mezipaměti, se převede na GET interně, aby se mezipaměť naplnila celým assetem. Viz Cache keys.

Pokud potřebujete ukládat do mezipaměti odpovědi na neidempotentní požadavky, udělejte to ve Workeru explicitně, například vytvořením hashe těla požadavku do syntetické URL adresy a provedením interního GET subrequest.

Upgrady WebSocket

Požadavky na upgrade WebSocket (GET hodnotou Upgrade: websocket) obcházejí mezipaměť a vždy vyvolají váš Worker. Relace WebSocket jsou už ze své podstaty stavové, takže nemá smysl je ukládat do mezipaměti.

Vlastní metody RPC

Pouze fetch() volání na WorkerEntrypoint procházejí přes Workers Caching. Vlastní metody RPC jako ctx.exports.Backend.getUser(id) obejde cache a callee vždy spustí bez ohledu na hodnotu entrypointu cache.enabled nastavení.

Chcete-li kešovat část práce, která je aktuálně vystavena jako metoda RPC, přepracujte ji na fetch handler na vlastním entrypointu a zavolat ho s fetch().

Stavové kódy, které se nikdy neukládají do mezipaměti

Workers Caching následující odpovědi nikdy neukládá do mezipaměti, a to ani při explicitním Cache-Control direktivy:

Další typy vyvolání

Workers Caching se vztahuje pouze na HTTP požadavky zpracované fetch handler na Vstupní bod Workeru. Následující typy volání se vždy spouští bez zapojení cache:

Vymazání podle hostitele

Neexistuje režim "purge by host". Mezipaměť patří Workeru, nikoli doméně, the host is not part of the cache key, so purging by host would not map onto anything the cache stores. Use vymazání podle tagu, vymazání podle prefixu cesty, nebo purgeEverything místo toho.

Předehřívání mezipaměti

Neexistuje API pro předběžné naplnění mezipaměti odpověďmi vygenerovanými v době sestavení. Odpověď se do mezipaměti uloží až poté, co byla alespoň jednou obsloužena. Pokud potřebujete mít předrenderovaný obsah k dispozici již pro prvního žadatele, použijte Static Assets.

Limity

Velikost odpovědi

Limity velikosti odpovědi jsou stejné jako u cache zóny Cloudflare. Limity podle jednotlivých plánů naleznete v Limity velikosti pro ukládání do mezipaměti.

Cache-Tag limity

Limity na počet, délku a znakovou sadu Cache-Tag hodnoty jsou stejné jako u Cloudflare zone cache. Viz Limity cache tagů pro úplný seznam.

Limity četnosti pro vymazávání

ctx.cache.purge() používá stejný systém omezování rychlosti jako zone purge API. Protože je ale Workers Caching svázán s Workerem, nikoli se zónou, Workers Caching vždy používá Limity úrovně Free popsané v Dostupnost a limity, bez ohledu na tarif vašeho účtu nebo zóny.

Vztah k ostatním cache

Konfigurace cache na úrovni zóny

Workers Caching je cache vašeho Workeru, nikoli cache vaší zóny. Jako konfigurační rozhraní slouží samotný Worker, takže vedle něj neexistuje žádná samostatná vrstva pravidel nebo nastavení. Na Workers Caching se nevztahuje nic z následujícího:

Funkce na úrovni zóny Ekvivalent v ukládání do mezipaměti Workers
Cache Rules a Cache Response Rules Nastavte Cache-Control hlavičky ve svém Workeru, nebo se podle požadavku rozhodovat a vracet různé hlavičky pro různé cesty.
Přizpůsobení cache key v Cache Rules Workers Caching má vlastní skladbu klíče, více informací najdete v Cache keys. Klíč upravte úpravou požadavku, například přepsáním URL nebo nastavením ctx.props v gateway Workeru).
Nastavení úrovně cache na úrovni zóny (bypass / standard / aggressive / ignore query string) Cache-Control hlavičky u odpovědi vyjadřují stejný záměr, jen na úrovni jednotlivého požadavku.
Výchozí seznam přípon souborů ukládaných do mezipaměti pro danou zónu Workers Caching cachuje jakoukoli odpověď, jejíž hlavičky uvádějí, že je cacheovatelná, bez ohledu na příponu souboru.
Vlastní topologie Tiered Cache Workers Caching standardně používá obecnou vrstvenou topologii mezipaměti. Protože se Worker může spustit kdekoli, pevně danou vlastní topologii nelze použít. Budoucí integrace s Smart Placement může vrstvení dále přizpůsobit.
Rulesets které upravují požadavek nebo odpověď před cache Transformujte požadavek nebo odpověď v kódu vašeho Workeru předtím, než jej vrátíte.

Chcete-li ovlivnit cache svého Workeru, upravte svůj Worker. Cache-Control hlavičky, ctx.props, skládání service bindings a ctx.cache.purge() pokrývá rozsah konfigurace.

Cache API (caches.default)

Cache API je samostatné programové úložiště mezipaměti. Je nezávislé na Workers Caching: operace v jednom neovlivňují druhé a ctx.cache.purge() je to, co invaliduje záznamy Workers-Caching.

U nových Workerů upřednostněte Workers Caching. Cache API je už ze své podstaty nízkoúrovňový primitiv:

Workers Caching poskytuje všechny tři možnosti automaticky. Cache API zůstává užitečné, pokud potřebujete jemně odstupňovanou programovou kontrolu.

fetch() cachování subrequestů

Workers Caching je cache na straně serveru před váš Worker. Jde o samostatnou mezipaměť, odlišnou od té, která stojí před odchozími fetch() subrequestů, které váš Worker odesílá na své vlastní origin servery. Oba fungují nezávisle na sobě: fetch() subrequest hit ušetří cestu na váš origin server, zatímco Workers Caching hit ušetří spuštění vašeho Workeru úplně.

cf vlastnosti na Request se v obou případech chovají odlišně:

cf vlastnost U odchozích fetch() do vašeho originu Na ctx.exports.<Entrypoint>.fetch()
cf.cacheKey Podporováno Podporováno, viz Custom Cache Keys
cf.cacheControl Podporováno Podporováno, viz Přepsat Cache-Control od volajícího Workeru
cf.cacheTtl Podporováno Není podporováno: nastavte TTL vrácením Cache-Control: max-age=N (nebo s-maxage=N) od volané funkce, nebo ho přepsat pomocí cf.cacheControl od volajícího
cf.cacheEverything Podporováno Není podporováno: Workers Caching rozhoduje o možnosti uložení do cache na základě Cache-Control; neexistuje způsob, jak vynuceně uložit do mezipaměti odpověď, kterou by jinak nebylo možné ukládat do mezipaměti

Již brzy

Následující rozhraní jsou aktuálně ve vývoji: