INTEGRITY Dokumentace

Poskytování Pages

Cloudflare Pages obsahuje řadu výchozích nastavení pro obsluhu vašich webů Pages. Tato stránka popisuje některá z těchto rozhodnutí, abyste rozuměli fungování Pages a věděli, jak případně přepsat některé výchozí chování.

Porovnávání tras

Pokud existuje HTML soubor, jehož cesta odpovídá aktuálně požadované trase, Pages jej doručí. Pages také přesměruje HTML stránky na jejich varianty bez přípony, například /contact.html bude přesměrován na /contact, a /about/index.html bude přesměrován na /about/.

Not Found behavior

Vlastní stránku, která se zobrazí, když Pages nenajde požadovaný soubor, můžete definovat vytvořením 404.html soubor. Pages se poté pokusí najít nejbližší stránku 404. Pokud se nenajde ve stejném adresáři jako požadovaná cesta, bude Pages pokračovat v hledání v adresářové struktuře výše a hledat odpovídající 404.html soubor s příponou /404.html. To znamená, že si můžete definovat vlastní cesty pro chybu 404 pro situace jako /blog/404.html a /404.html, a Pages automaticky vykreslí tu správnou podle situace.

Vykreslování jednostránkových aplikací (SPA)

Pokud váš projekt neobsahuje na nejvyšší úrovni 404.html soubor, Pages předpokládá, že nasazujete jednostránkovou aplikaci. Platí to i pro frameworky jako React, Vue nebo Angular. Výchozí chování Pages pro jednostránkové aplikace namapuje všechny příchozí cesty na kořen (/), což umožňuje zachytit adresy URL jako /about nebo /help a reagovat na ně přímo ve vaší SPA.

Ukládání do mezipaměti a výkon

Doporučení

Ve většině situací byste se měli vyhnout nastavování vlastního cachování na svém webu. Pages má vestavěné výchozí cachování, které je optimalizované tak, aby cachovalo co nejvíce a zároveň poskytovalo co nejaktuálnější obsah. Při každém nasazení assetu do Pages zůstává asset uložen v mezipaměti na Cloudflare CDN až do dalšího nasazení.

Pokud tedy přidáte ukládání do mezipaměti do svého vlastní doména, může to vést k tomu, že se po nasazení budou zobrazovat zastaralé statické soubory.

Přidání cachování pro vlastní doménu navíc může způsobit problémy s Přesměrování Pages nebo Pages functions. Tyto problémy mohou nastat, protože se koncovému uživateli může doručit odpověď z cache dříve, než Pages stihne požadavek zpracovat.

Existují však situace, kdy Cache Rules na vlastní doméně skutečně dává smysl. Můžete mít třeba snadno cachovatelná umístění pro neměnné soubory, jako jsou CSS nebo JS soubory s hashem obsahu v názvu. Vlastní cachování v takovém případě pomůže a zrychlí uživatelský zážitek, dokud se soubor (a s ním i jeho název) nezmění. Jen dbejte na to, aby vaše cachování nekolidovalo se žádnými přesměrováními nebo s Functions.

Mějte na paměti, že když používáte Cloudflare Pages, statická aktiva, která nahrajete jako součást svého Pages projektu, se automaticky obsluhují z Tiered Cache. Pro vlastní doménu, na které běží váš projekt Pages, není nutné Tiered Cache zapínat zvlášť.

Chování

Pro ukládání do mezipaměti prohlížeče Pages vždy odesílá Etag hlaviček pro 200 OK odpovědí, které prohlížeč následně vrátí v If-None-Match hlavičku u následných požadavků na dané aktivum. Pages porovnává If-None-Match hlavičku z požadavku pomocí Etag se chystá odeslat, a pokud se shodují, Pages místo toho odpoví 304 Not Modified která prohlížeči sděluje, že je bezpečné použít to, co je uloženo v lokální cache.

Pages aktuálně vrací 200 odpovědi pro požadavky HTTP Range. Tým ale pracuje na přidání specifikaci odpovídajících 206 částečné odpovědi.

Pages podle možností poskytuje také odpovědi komprimované pomocí Gzip a Brotli.

Uchovávání assetů

Assety vkládáme do cache zvlášť pro jednotlivá datacentra. Assety mají dobu platnosti (TTL) jeden týden, ale mohou zmizet i kdykoli dříve. Pokud provedete nové nasazení, mohou assety v daném datacentru přetrvat až týden.

Hlavičky

Pages ve výchozím nastavení automaticky přidává několik HTTP hlavičky odpovědi při obsluze statických souborů, mimo jiné:

Vždy přidávané hlavičky
Access-Control-Allow-Origin: *
Cf-Ray: $CLOUDFLARE_RAY_ID
Referrer-Policy: strict-origin-when-cross-origin
Etag: $ETAG
Content-Type: $CONTENT_TYPE
X-Content-Type-Options: nosniff
Server: cloudflare
Někdy přidávané hlavičky
// if the asset has been encoded
Cache-Control: no-transform
Content-Encoding: $CONTENT_ENCODING

// if the asset is cacheable (the request does not have an `Authorization` or `Range` header)
Cache-Control: public, max-age=0, must-revalidate

// if requesting the asset over a preview URL
X-Robots-Tag: noindex

Chcete-li upravit hlavičky přidané službou Cloudflare Pages, například přidat Early Hints - aktualizujte soubor _headers ve vašem projektu.