Přejít k obsahu
BeoHosting
BeoHosting
Technické

Co je caching a jaké jsou druhy cachování

BeoHosting Team··10 min čtení čtení
Co je caching a jaké jsou druhy cachování

Co je caching a proč na něm záleží

Caching je technika ukládání kopie dat na místo, odkud je lze získat rychleji, místo abyste je pokaždé znovu generovali nebo načítali z původního zdroje. Představte si caching jako pořízení fotokopie dokumentu, který často používáte, místo abyste pokaždé chodili pro originál do archivu. V kontextu webových stránek caching dramaticky zrychluje načítání stránek, snižuje zátěž serveru a zlepšuje uživatelský zážitek. Bez cachování by každý požadavek na stránku vyžadoval zpracování PHP kódu, dotazy do databáze a generování HTML od nuly.

Caching funguje na principu dočasného ukládání výsledků náročných operací. Když uživatel navštíví stránku poprvé, server ji kompletně vygeneruje a výsledek uloží do cache. Každý další uživatel dostane uloženou verzi doručenou ve zlomku času. Typická dynamická stránka WordPressu bez cache se načte za 2 až 5 sekund, zatímco cachovaná verze téže stránky může být doručena za 50 až 200 milisekund, tedy 10 až 100násobné zlepšení.

Cachování v prohlížeči

Jak funguje cache prohlížeče

Cachování v prohlížeči je nejjednodušší a nejbližší forma cachování, která probíhá přímo na zařízení uživatele. Když navštívíte web, prohlížeč ze serveru stáhne HTML, CSS, JavaScript, obrázky a fonty. Cache prohlížeče tyto soubory ukládá lokálně, takže při příští návštěvě je nemusí znovu stahovat ze serveru. Proto se při druhé návštěvě stránka načte mnohem rychleji než poprvé.

HTTP hlavičky cache

Server řídí cachování v prohlížeči pomocí HTTP hlaviček, které prohlížeči říkají, jak dlouho má určité soubory uchovávat. Hlavička Cache-Control je nejdůležitější a může obsahovat direktivy jako max-age určující, kolik sekund má prohlížeč soubor uchovávat, no-cache říkající prohlížeči, že musí před použitím cache ověřit u serveru, no-store zcela zakazující cachování a public nebo private určující, zda mohou obsah cachovat zprostředkovatelé jako CDN.

Hlavička Expires je starší způsob nastavení cache, který definuje přesné datum a čas, kdy cache vyprší. Hlavička ETag je identifikátor verze souboru, který prohlížeč posílá serveru, aby zkontroloval, zda se soubor změnil. Pokud se nezměnil, server vrátí odpověď 304 Not Modified bez obsahu, čímž šetří přenosové pásmo. Hlavička Last-Modified funguje podobně, ale místo identifikátoru používá datum poslední změny. V praxi používejte Cache-Control s max-age pro statické zdroje a ETag pro dynamický obsah.

Praktická konfigurace

Pro optimální cachování v prohlížeči nastavte dlouhé hodnoty max-age pro statické zdroje, které se málokdy mění. Soubory CSS a JavaScript s verzovanými názvy jako style.v2.css mohou mít max-age jeden rok, protože když se obsah změní, změníte název souboru. Obrázky mohou mít max-age od 30 dní do jednoho roku podle toho, jak často je měníte. HTML stránky by měly mít krátké max-age nebo no-cache, protože obsah se mění častěji. V Apache použijte direktivu mod_expires v souboru htaccess a v Nginx direktivu expires v konfiguraci.

Cachování na serveru

Opcode caching

PHP je interpretovaný jazyk, což znamená, že PHP kód se při každém načtení stránky kompiluje do strojového kódu. Opcode caching toto opakování eliminuje tím, že zkompilovaný strojový kód ukládá do paměti. OPcache je vestavěný mechanismus PHP pro opcode caching, který je součástí PHP 5.5 a novějších. Když je OPcache aktivní, PHP kód se zkompiluje jen jednou a každý další požadavek používá dříve zkompilovaný kód z paměti. Tím lze PHP aplikace zrychlit 2 až 5krát bez jakýchkoli změn v kódu.

Cachování celých stránek

Cachování celých stránek neboli page cache ukládá kompletní HTML výstup stránky, takže PHP kód se pro cachované požadavky vůbec nespouští. Toto je nejúčinnější forma cachování pro WordPress a podobné CMS platformy, protože eliminuje veškeré zpracování PHP a dotazy do databáze. Server jednoduše doručí statický HTML soubor z cache. Nginx FastCGI cache a Apache mod_cache jsou řešení na úrovni serveru, zatímco WordPress pluginy jako WP Super Cache a W3 Total Cache implementují page cache na úrovni aplikace.

Konfigurace serverové cache

V Nginx direktiva fastcgi_cache definuje cache zónu v paměti, fastcgi_cache_valid nastavuje, jak dlouho je cache platná pro různé HTTP stavové kódy, a fastcgi_cache_key definuje klíč, podle kterého se cache identifikuje, obvykle kombinaci metody požadavku, hostitele a URI. Je důležité správně nakonfigurovat výjimky, aby se necachovaly POST požadavky, stránky s cookies pro přihlášené uživatele, administrátorské stránky a stránky s parametry dotazu. U BeoHostingu naše servery používají optimalizovanou konfiguraci Nginx s FastCGI cache pro maximální výkon WordPress webů.

Objektová cache

Co je objektová cache

Objektová cache ukládá výsledky databázových dotazů a dalších náročných operací do rychlé databáze v paměti, místo aby se tyto dotazy znovu spouštěly při každém načtení stránky. WordPress má vestavěný mechanismus objektové cache, ale ve výchozím nastavení uchovává data jen po dobu jednoho požadavku. S perzistentním řešením objektové cache, jako je Redis nebo Memcached, zůstávají cachované objekty v paměti mezi požadavky, což dramaticky snižuje počet databázových dotazů.

Redis jako objektová cache

Redis je databáze v paměti, která ukládá data do RAM s volitelným perzistentním uložením na disk. Pro WordPress plugin Redis Object Cache propojuje API objektové cache WordPressu se serverem Redis. Typický WordPress web spustí na jedné stránce 50 až 200 databázových dotazů. S objektovou cache Redis je většina těchto dotazů eliminována, protože výsledky se čtou z paměti, která je stokrát rychlejší než disk. Redis podporuje různé datové struktury včetně řetězců, hashů, seznamů, množin a seřazených množin, což ho činí mimořádně flexibilním.

Alternativa Memcached

Memcached je další oblíbené řešení objektové cache, které je jednodušší než Redis, ale pro většinu WordPress webů dostačující. Memcached ukládá data výhradně do paměti bez perzistentního uložení, což znamená, že všechna cachovaná data se při restartu serveru ztratí. Výhodou Memcached je nižší spotřeba paměti na klíč a velmi stabilní výkon při vysoké zátěži. Pro většinu webů nepřinese volba mezi Redis a Memcached patrný rozdíl ve výkonu.

Cachování stránek pro CMS

WordPress pluginy pro cachování

Ekosystém WordPressu nabízí mnoho pluginů pro cachování stránek s různými funkcemi a složitostí. WP Super Cache je nejoblíbenější bezplatný plugin, který generuje statické HTML soubory a doručuje je přímo bez zpracování PHP. W3 Total Cache je komplexnější řešení, které kombinuje page cache, cache prohlížeče, objektovou cache a integraci CDN, ale je složitější na konfiguraci. WP Rocket je prémiový plugin nabízející vynikající rovnováhu mezi výkonem a jednoduchostí s automatickou konfigurací a pokročilými optimalizacemi.

Invalidace cache

Největší výzvou cachování je invalidace – jak a kdy smazat zastaralou cache. Pokud zveřejníte nový příspěvek na blogu, ale cache zobrazuje starou verzi úvodní stránky, návštěvníci nový obsah neuvidí. Dobré cachovací pluginy automaticky mažou příslušné soubory cache, když se obsah změní. Například když zveřejníte nový příspěvek, měli byste smazat cache úvodní stránky, cache stránky kategorie, do které příspěvek patří, stránky datových archivů a sitemap. Ručnímu úplnému vymazání cache je třeba se vyhýbat, protože způsobuje dočasný pokles výkonu, dokud se cache znovu nevybuduje.

Cachování pomocí CDN

Jak CDN funguje

Content Delivery Network neboli CDN je síť serverů rozmístěných po celém světě, která ukládá kopie vašeho webu a doručuje obsah ze serveru geograficky nejblíže k návštěvníkovi. Když na váš web hostovaný v datovém centru v EU přistoupí návštěvník z Tokia, bez CDN cestuje požadavek přes oceán a přidává 200 až 300 milisekund odezvy. S CDN se obsah doručuje z CDN serveru v Tokiu nebo nedaleké oblasti s odezvou pouhých 10 až 30 milisekund.

Oblíbené služby CDN

Služba CDN Cloudflare je nejoblíbenější CDN s bezplatným tarifem, který zahrnuje CDN, ochranu před DDoS, SSL certifikát a základní optimalizace. Cloudflare má přes 300 datových center po celém světě včetně regionálních lokalit jako Vídeň a Bukurešť. BunnyCDN je cenově dostupná alternativa s platbou podle využití a vynikajícím výkonem. AWS CloudFront, Google Cloud CDN a Azure CDN jsou enterprise řešení integrovaná s cloudovými platformami. Pro WordPress weby je Cloudflare nejjednodušší na nastavení s vyhrazeným WordPress pluginem, který při zveřejnění obsahu automaticky vyčistí cache.

Edge caching

Moderní CDN nabízejí možnosti edge computingu, kde logika aplikace běží na CDN serverech místo na původním serveru. Cloudflare Workers, Vercel Edge Functions a AWS Lambda@Edge umožňují spouštět kód na edge lokalitách pro personalizaci obsahu, A/B testování, přesměrování a autentizaci bez komunikace s původním serverem. Edge caching v kombinaci s edge computingem dokáže doručit plně personalizované stránky rychlostí CDN, což je revoluční změna ve výkonu webu.

Strategie cachování

Vzor cache-aside

Cache-aside neboli lazy loading je nejběžnější vzor cachování, kdy aplikace nejprve zkontroluje cache, zda obsahuje požadovaná data. Pokud data v cache existují, nazývá se to cache hit a okamžitě se vrátí. Pokud neexistují, jde o cache miss a aplikace načte data z databáze, uloží je do cache a poté je vrátí uživateli. Tento vzor se snadno implementuje a dobře funguje pro aplikace s převahou čtení, kde se data čtou mnohem častěji, než se mění.

Write-through a write-behind

Vzor write-through zapisuje data současně do cache i databáze, čímž zaručuje, že cache je vždy aktuální, ale zvyšuje latenci zápisu. Vzor write-behind neboli write-back zapisuje data nejprve do cache a asynchronně je zapisuje do databáze, čímž snižuje latenci zápisu, ale vytváří riziko ztráty dat, pokud server spadne dříve, než se data zapíšou do databáze. Pro většinu webových aplikací je cache-aside s chytrou invalidací nejlepší volbou, protože vyvažuje výkon a konzistenci.

Závěr

Caching je základní technika pro výkon webu, která funguje na více úrovních od prohlížeče po CDN. Cache prohlížeče eliminuje zbytečné stahování statických zdrojů, serverová cache zrychluje generování dynamických stránek, objektová cache snižuje zátěž databáze, page cache eliminuje zpracování PHP a CDN cache přibližuje obsah uživatelům po celém světě. Kombinace těchto technik dokáže váš web zrychlit 10 až 100krát a výrazně zlepšit uživatelský zážitek. U BeoHostingu nabízíme hosting optimalizovaný na výkon s OPcache, objektovou cache Redis a podporou integrace CDN. Otestujte si rychlost svého webu.

BeoHosting Team

10+ let zkušeností — Specialisté na webhosting a infrastrukturu

  • Web Hosting
  • WordPress Hosting
  • VPS
  • Dedicated Serveri
  • Domeni
  • SSL
  • cPanel
  • LiteSpeed
  • Linux administracija
  • DNS

Naposledy aktualizováno: