HTTP cache headers definujú, ako sa webové zdroje ukladajú, získavajú a obnovujú, čo priamo ovplyvňuje časy načítania a efektivitu servera. Tu prichádza na rad HTTP cachovanie. Fungujú ako pokyny pre prehliadače a cachovacie servery, ktoré určujú, ako dlho sa má obsah ukladať a kedy sa má opätovne overovať. HTTP cache headers sú smernice odosielané serverom na kontrolu ukladania a získavania zdrojov prehliadačmi a sprostredkovateľskými cache pamäťami (ako sú CDN). Správnou konfiguráciou cache hlavičiek môžu firmy znížiť latenciu, spotrebu šírky pásma a zlepšiť používateľský zážitok, pričom zabezpečia, že obsah zostane aktuálny. HTTP cache headers definujú, ako sa webové aktíva ukladajú, overujú a servírujú, čo ovplyvňuje výkon a efektivitu šírky pásma.

Kľúčové HTTP hlavičky pre cachovanie
Efektívne riadenie cachovania závisí od správneho pochopenia a použitia rôznych HTTP hlavičiek. Tieto hlavičky slúžia ako pokyny pre prehliadače a sieťové zariadenia na správu dočasného ukladania webových zdrojov.
1. Cache-Control
Cache-Control hlavička je najdôležitejšou smernicou pre kontrolu správania cachovania v HTTP. Režim max-age nastavuje časový limit v sekundách, počas ktorého sa zdroj považuje za čerstvý. Direktíva no-store znamená, že prehliadače nesmú ukladať odpoveď do cache a musia ju pri každom vyžiadaní načítať zo servera. Direktíva private v odpovedi naznačuje, že zdroj je špecifický pre používateľa - stále sa môže ukladať do cache, ale iba na klientskom zariadení.
2. Expires
Hlavička Expires špecifikuje presný dátum a čas vypršania platnosti pre cachované zdroje. Bola do značnej miery nahradená hlavičkou Cache-Control, ale stále sa používa pre staršie systémy.
3. ETag
Hlavička ETag (Entity Tag) poskytuje jedinečný identifikátor pre každú verziu zdroja, čo prehliadačom a cache pamätiam umožňuje určiť, či je uložená verzia stále platná. Toto je silná forma overenia, kde klient posiela hlavičku If-None-Match so svojím ETagom, aby server určil, či sa zdroj zhoduje.
4. Last-Modified
Hlavička Last-Modified informuje prehliadač, kedy bol zdroj naposledy aktualizovaný. Klienti posielajú hlavičku If-Modified-Since, aby overili, či sa zdroj od uvedenej doby zmenil.
5. Pragma
Primárne používaná v HTTP/1.0, hlavička Pragma pri nastavení na no-cache instruuje cache, aby neukladala odpoveď. Hoci funguje podobne ako Cache-Control: no-cache, moderné prehliadače a CDN sa spoliehajú na hlavičku Cache-Control.
6. Vary
Hlavička Vary určuje, ako cache pamäte rozlišujú verzie zdroja na základe hlavičiek požiadavky. Napríklad Vary: Accept-Encoding hovorí cache, aby ukladala samostatné verzie pre komprimované (gzip, br) alebo nekomprimované odpovede, čím sa zabezpečí, že používatelia dostanú kompatibilný obsah. Je to kľúčové pre CDN, ktoré spracovávajú komprimované vs. nekomprimované aktíva alebo mobilné vs. desktopové variácie. Hlavička Vary efektívne klasifikuje zdroje na základe špecifických hlavičiek požiadaviek, čo môže viesť k duplicitnému ukladaniu, ale zaisťuje správne doručenie.

Typy cache pamätí a ich použitie
HTTP protokol má zabudovaný mechanizmus cachovania. Princíp cachovania spočíva v lokálnom uložení kópie požadovaného zdroja, aby sa pri opakovanej požiadavke mohla vrátiť táto kópia namiesto opätovného sťahovania zo servera, čím sa zníži prenos zdrojov a zvýši efektivita.
1. Shared Cache (Zdieľaná cache)
Rôzni klienti môžu získať zdroje zo zdieľanej cache, čo je vhodné pre scenáre, kde viacerí klienti pristupujú k rovnakým zdrojom. Bežne sa používa na webových proxy serveroch.
2. Private Cache (Súkromná cache)
Iba konkrétni používatelia alebo klienti k nej môžu pristupovať, pričom ostatní nemajú prístupové práva. Typicky sa jedná o prehliadač.
Proces cachovania a overovania
HTTP cachovanie sa všeobecne vzťahuje na požiadavky typu GET, pretože tieto požiadavky zvyčajne nemajú žiadne iné parametre okrem URI a používajú sa hlavne na získanie zdrojov zo servera.
Nastavenie doby platnosti
Cache-Control: max-age=31536000 nastavuje platnosť zdroja, čím prepisuje hlavičku Expires. V HTTP 1.0 môže pole Pragma dosiahnuť podobné funkcie. Napríklad Pragma: no-cache má podobný efekt ako Cache-Control: no-cache, núti klienta overiť cache na serveri. Po uložení zdroja do cache klientom je potrebné z bezpečnostných dôvodov nastaviť dobu platnosti. Cache je platná iba v rámci tejto doby platnosti; ak uplynie, je potrebné zdroj znova získať zo servera.
Správa po uplynutí platnosti
Keď zdroj vstúpi do neplatného stavu (stale), okamžite sa z klienta neodstráni. Namiesto toho pri nasledujúcej požiadavke sa odošle požiadavka If-None-Match na server, aby sa overilo, či je zdroj na strane servera stále čerstvý.
Výpočet čerstvosti
Doba čerstvosti zdroja je určená pomocou Cache-Control: max-age=N. Ak toto pole hlavičky v odpovedi nie je prítomné, skontroluje sa, či existuje hlavička Expires. Ak existuje, čas čerstvosti je Expires - Date. Pre zlepšenie efektivity HTTP požiadaviek je zvyčajne žiaduca dlhšia doba cachovania. Avšak príliš dlhá doba cachovania sťaží aktualizáciu serverových zdrojov. Pre súbory, ktoré sa často neaktualizujú, je možné pridať názov súboru a číslo verzie do URL požiadavky. Rovnaké číslo verzie znamená, že obsah zdroja sa nezmenil a môže byť dlho cachovaný. Keď sa obsah serverového zdroja zmení, stačí aktualizovať číslo verzie v URL požiadavky.
Metódy overenia
Keď klient overuje platnosť zdroja, nemôže priamo poslať zdroj serveru, inak by to spôsobilo plytvanie zdrojmi. HTTP poskytuje hlavičku ETags ako jedinečný identifikátor zdroja. Klient pošle požiadavku If-None-Match, aby server určil, či sa zdroj zhoduje, čo je silné overenie.
Odpoveď servera pri overení
Server sa môže rozhodnúť, či vykoná overenie súboru. Ak neoverí, priamo vráti stavový kód 200 OK a zdroj; ak overí, vráti 304 Not Modified, čím informuje klienta, že môže naďalej používať cachovaný zdroj.

Pokročilé scenáre a nástroje
HTTP cachovanie je komplexná téma, ktorá sa neustále vyvíja s novými štandardmi a nástrojmi na zlepšenie výkonu.
Obsahové siete doručovania (CDN)
Content Delivery Networks (CDN) sú kľúčovými hráčmi vo svete HTTP cachovania. Tieto siete strategicky umiestňujú servery po celom svete, aby doručovali obsah používateľom z geograficky blízkych miest. FlashEdge CDN ponúka pokročilé možnosti riadenia cache, ktoré umožňujú používateľom jemne doladiť, ako HTTP hlavičky ovplyvňujú cachovanie. Využitie CDN s robustnými možnosťami cachovania zaisťuje, že cache hlavičky sú správne implementované, čím sa znižujú cache miss a zvyšuje rýchlosť doručenia. FlashEdge CDN pozdvihuje vaše doručovanie obsahu svojou podnikovou sieťou, optimalizovanou na priblíženie dynamického a statického obsahu používateľom po celom svete. S viac ako 700 bodmi prítomnosti (PoP) po celom svete a robustnou sadou funkcií FlashEdge zaisťuje rýchle doručenie obsahu cez kontinenty. Bezproblémová integrácia s AWS, FlashEdge vylepšuje vašu infraštruktúru robustnými bezpečnostnými funkciami, vrátane šifrovania SSL/TLS a ochrany DDoS.
Nové štandardy pre HTTP cachovanie
Pracovná skupina HTTP pri Internet Engineering Task Force (IETF) pracuje na definovaní nových HTTP štandardov na zlepšenie cachovania. Dve nové špecifikácie sú Cache-Status a Targeted Cache-Control Headers. Cache-Status pomáha pri diagnostike cachovacieho systému, zatiaľ čo Targeted Cache-Control Headers umožňuje jemnejšie riadenie cachovania pre špecifické ciele (napr. CDN). Tieto nové štandardy sľubujú zjednodušiť konfiguráciu a ladenie cachovania.
Praktické aspekty a výzvy
Cachovanie môže byť zložité, najmä pri mnohých vrstvách cachovania (prehliadač, CDN, proxy servery). Každá vrstva môže vyžadovať odlišnú konfiguráciu. Nástroje ako HTTP Toolkit pomáhajú pri testovaní a ladení HTTP požiadaviek, cachovania a chýb. Prehliadače môžu ukladať používateľom špecifické dáta, zatiaľ čo CDN by to nemali robiť. Vznikajú problémy s vysledovateľnosťou: prišiel tento obsah z cache alebo zo skutočného servera? Ak z cache, z ktorej a ako dlho bude platná? Existujúce hlavičky ako X-Cache-Status (Nginx), CF-Cache-Status (Cloudflare) a X-Served-By/X-Cache (Fastly) pomáhajú pri diagnostike, ale tieto sú špecifické pre jednotlivých poskytovateľov.

Význam latencie
Hoci šírka pásma je dôležitá, najnovšie verzie HTTP protokolu, ako je HTTP/2, sa zameriavajú na zníženie latencie. Latencia je oneskorenie pri prenose dát, ktoré môže výrazne ovplyvniť používateľský zážitok. Dobre nakonfigurované cachovanie je jedným z najefektívnejších spôsobov, ako znížiť latenciu, pretože eliminuje potrebu opakovaných požiadaviek na server. Počiatočné okno zahltenia TCP, ktoré bolo kedysi 1 segment, sa zvýšilo, ale latencia zostáva kritickým faktorom.
Príklady použitia
Správne cachovanie je nevyhnutné pre vysokovýkonné webové aplikácie. Napríklad webová stránka s miliónmi denných kontrol hesiel môže vďaka efektívnemu cachovaniu dosiahnuť nízke prevádzkové náklady. V prípade typickej SPA (Single Page Application) sa stáva stiahnutie veľkého množstva dát pre vykreslenie používateľského rozhrania bežným, čo robí cachovanie ešte dôležitejším.
Pre súbory, ktoré sa často menia, ako sú napríklad HTML súbory obsahujúce odkazy na iné aktíva, je ich cachovanie notoricky nebezpečné. Servery API tiež predstavujú výzvu, pretože často negenerujú cache hlavičky na základe metadát súborov, ako je to pri tradičných súboroch.
Softvérové riešenia pre cachovanie
Okrem prehliadačov a CDN existujú aj samostatné softvérové riešenia, ako sú Varnish, Squid, Traffic Server alebo dokonca Nginx, ktoré fungujú ako proxy servery a poskytujú pokročilé možnosti cachovania. Tieto riešenia sú často open-source a tvoria základ mnohých CDN. Znalosť ich konfigurácie a údržby je priamo prenosná pri prechode na infraštruktúru CDN.
