← Cloudflare Cache / cache / how-to
Cache keys
Cache Key je identifikátor, který Cloudflare používá pro soubor v naší mezipaměti, a Cache Key Template definuje identifikátor pro danou žádost HTTP.
Výchozí klíč mezipaměti obsahuje:
- Úplná URL adresa:
- schéma, tedy HTTP nebo HTTPS.
- hostitel, například
www.cloudflare.com - URI s řetězcem dotazu, například
/logo.jpg?utm_source=newsletter
- Hlavička Origin odeslaná klientem (pro podporu CORS).
x-http-method-override,x-http-method, ax-method-overridehlaviček.x-forwarded-host,x-host,x-forwarded-scheme(pokud se nejedná o http nebo https),x-original-url,x-rewrite-url, aforwardedhlaviček.
Vytvoření vlastních cache keys
Custom Cache Keys umožňují přesně nastavit cacheovatelnost libovolného prostředku. Přinášejí výhodu větší kontroly, mohou ale snížit vaši cache hit rate a způsobit cache sharding:
-
V dashboardu Cloudflare přejděte na Cache Rules stránce.
Přejděte na Cache Rules ↗ -
Vyberte Vytvořit pravidlo.
-
V části Když příchozí požadavky odpovídají, definujte výraz pravidla.
-
V části Poté, v Způsobilost pro ukládání do mezipaměti sekci vyberte Způsobilé pro cache.
-
Přidejte Cache Key nastavení k pravidlu a vyberte odpovídající Query String nastavení.
-
Můžete také vybrat nastavení pro Hlavičky, Cookie, Host, a Uživatel.
-
Chcete-li pravidlo uložit a nasadit, vyberte Nasadit. Pokud ještě nejste připraveni pravidlo nasadit, vyberte Save as Draft.
Cache Key Template
Existuje několik běžných důvodů pro změnu Cache Key Template. Šablonu Cache Key Template můžete změnit mimo jiné z těchto důvodů:
- Rozdělte mezipaměť tak, aby byla jedna URL adresa uložena ve více souborech, například pro ukládání různých souborů na základě konkrétního query stringu v URL adrese.
- Sjednoťte mezipaměť tak, aby se různé HTTP požadavky ukládaly do stejného souboru. Můžete tak například odstranit hlavičku Origin, kterou Cloudflare ve výchozím nastavení přidává do Cache Keys.
Vliv nastavení SSL na chování mezipaměti
Cloudflare $scheme proměnná hraje klíčovou roli v chování mezipaměti, ale její význam se liší v závislosti na typu cache klíče:
-
Default Cache Key:
$schemeodkazuje na schéma originu : protokol, který Cloudflare používá k připojení k vašemu serveru originu (HTTP nebo HTTPS). V této konfiguraci změny nastavení SSL (například přechod z Flexible na Full) mění schéma originu. Protože klíč mezipaměti zahrnuje schéma originu, tyto změny vyvolají zneplatnění mezipaměti a Cloudflare musí obsah znovu načíst z originu. -
Custom Cache Key:
$schemeodkazuje na schéma návštěvníka : protokol, který používá klient odesílající požadavek na Cloudflare. V tomto případě změny nastavení SSL neovlivňují klíč mezipaměti, pokud schéma originu není explicitně zahrnuto ve vaší vlastní konfiguraci.
Například u režimu Flexible SSL se Cloudflare k origin serveru vždy připojuje přes HTTP, bez ohledu na to, zda návštěvník používá HTTP nebo HTTPS. Ve výchozí konfiguraci to vede ke stejnému klíči mezipaměti pro oba protokoly.
Mějte na paměti, že změny v nastavení SSL mohou při použití výchozího cache key vést k invalidaci mezipaměti:
-
Přechod z Vypnuto na Full, Full (strict), nebo Striktní aktualizuje schéma originu z HTTP na HTTPS, což vede ke zneplatnění mezipaměti.
-
Přechod z Flexibilní na Full, Full (strict), nebo Striktní rovněž mění schéma originu na HTTPS, což vede ke zneplatnění mezipaměti.
Vysvětlení, jak $scheme ovlivňuje vaši konfiguraci ukládání do mezipaměti, je klíčové při změně režimů SSL, abyste předešli neočekávanému chování mezipaměti.
Cache Level: Ignore Query String
Cache Level Ignore Query String vytvoří Cache Key, který obsahuje všechny prvky výchozího cache key, kromě query stringu v URI, který již není zahrnut. Například u požadavku na http://example.com/file.jpg?something=123 a požadavek na http://example.com/file.jpg?something=789 budou mít v tomto případě stejný klíč mezipaměti.
Nastavení Cache Key
Následující pole řídí Cache Key Template.
Query String
Query string určuje, které parametry z URL se zahrnou do Cache Key. Můžete include konkrétní parametry řetězce dotazu nebo exclude pomocí příslušných polí. Pokud zahrnete parametr řetězce dotazu, value parametru query stringu se použije v Cache Key.
Příklad
Pokud do URL zahrnete řetězec dotazu foo, jako je https://www.example.com/?foo=bar, pak se v Cache Key objeví bar. Právě jedno z include nebo exclude se očekává.
Poznámky k použití
- Chcete-li zahrnout všechny parametry query stringu (výchozí chování), použijte include:
"\*" - Chcete-li ignorovat query stringy, použijte exclude:
"\*" - Chcete-li zahrnout většinu parametrů query stringu a jen několik málo vyloučit, použijte pole exclude, které předpokládá, že ostatní parametry query stringu jsou zahrnuty.
Hlavičky
Hlavičky určují, které hlavičky se zahrnou do Cache Key. Podobně jako u Query String můžete zahrnout konkrétní hlavičky nebo vyloučit výchozí hlavičky.
Když zahrnete hlavičku, její hodnota se zahrne do Cache Key. Pokud například požadavek HTTP obsahuje hlavičku HTTP jako X-Auth-API-key: 12345, a zahrnete X-Auth-API-Key header ve vaší Cache Key Template, pak 12345 se objeví v Cache Key.
V Zahrnout hlavičky a vybrané hodnoty sekci můžete do cache key přidat názvy hlaviček a jejich hodnoty. U vlastních hlaviček jsou hodnoty volitelné, ale u následujících omezených hlaviček musíte uvést jednu až 10 konkrétních hodnot:
acceptaccept-charsetaccept-encodingaccept-datetimeaccept-languagerefereruser-agent
Chcete-li zkontrolovat přítomnost hlavičky bez zahrnutí její skutečné hodnoty, použijte Kontrola přítomnosti možnost.
V současnosti můžete vyloučit pouze Origin hlavičku. Origin hlavička je vždy zahrnuta, pokud není výslovně vyloučena. Zahrnutí Hlavička Origin ↗ v cache key je důležité pro vynucení CORS ↗.
Dále nelze uvést následující hlavičky:
- Hlavičky, které nahrazují funkce mezipaměti nebo proxy
connectioncontent-lengthcache-controlif-matchif-modified-sinceif-none-matchif-unmodified-sincerangeupgrade
- Hlavičky, které pokrývají jiné funkce Cache Key
cookiehost
- Hlavičky specifické pro Cloudflare, které začínají předponou
cf-, napříkladcf-ray - Hlavičky, které jsou již součástí vlastní šablony Cache Key, například
origin
Host
Host určuje, která hlavička Host se zahrne do Cache Key.
- Pokud
Use original host(resolved: falsev API), Cloudflare zahrneHosthlavičku v HTTP požadavku odeslaném do originu. - Pokud
Resolved host(resolved: truev API), Cloudflare zahrneHosthlavička, která byla vyhodnocena pro získáníorigin IPpro požadavek.Hosthlavička se může lišit od skutečně odeslané hlavičky, pokud byla změněna pomocí Origin Rule.
Cookie
Stejně jako query_string nebo header, cookie určuje, které cookies se objeví v Cache Key. Můžete zahrnout přímo hodnotu cookie, nebo jen ověřit přítomnost konkrétní cookie.
Poznámky k použití
Cookies specifické pro Cloudflare nelze zahrnout. Cloudflare cookies mají prefix __cf, například __cflb
Uživatelské funkce
Pole uživatelských funkcí přidávají do Cache Key informace o koncovém uživateli (klientovi).
device_typeklasifikuje požadavek jakomobile,desktop, nebotabletna základě User Agentgeozahrnuje zemi klienta odvozenou z IP adresylangzahrnuje první jazykový kód obsažený vAccept-Languagehlavička odeslaná klientem
Dostupnost
Dostupnost možností cache keys se liší podle vašeho plánu.
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
| Cache deception armor | Ano | Ano | Ano | Ano |
| Cache podle typu zařízení | Ano | Ano | Ano | Ano |
| Ignorovat řetězec dotazu | Ano | Ano | Ano | Ano |
| Seřadit query string | Ano | Ano | Ano | Ano |
| Query string | Ne | Ne | Ne | Ano |
| Hlavičky | Ne | Ne | Ne | Ano |
| Cookie | Ne | Ne | Ne | Ano |
| Host | Ne | Ne | Ne | Ano |
| Uživatelské funkce | Ne | Ne | Ne | Ano |
Řešení potíží
Můžete použít Cloudflare Trace zjistit, které nastavení Cache Key bylo u vašeho požadavku uplatněno. Když odešlete požadavek přes nástroj Trace a požadavek byl obsloužen z mezipaměti, zobrazí se zásah do mezipaměti (cache hit) v Parametry mezipaměti sekce. Poté vyberte Zobrazit podrobnosti parametru zjistit přesně, které vlastnosti Cache Key byly použity.
Omezení
Prefetch funkce není kompatibilní s Custom Cache Keys. S Cache Rules, vlastní cache key se používá k ukládání všech prostředků do cache. Prefetch ale vždy používá výchozí cache key. To vede k neshodě klíčů.