Cache neboli mezipaměť patří mezi nejúčinnější způsoby, jak zrychlit webové stránky v Joomla! Správně nastavená cache omezuje opakované databázové dotazy, zkracuje dobu generování stránky a snižuje zatížení hostingu. Při nevhodném nastavení ale může návštěvníkům zobrazovat zastaralý obsah, cizí stav košíku nebo nefunkční formulář.
V tomto článku najdete kompletní návod k nastavení cache v Joomla! Vysvětlíme si rozdíl mezi konzervativní, progresivní a celostránkovou cache, ukážeme si nastavení modulů, dobu platnosti, úložiště cache i bezpečné výjimky pro e-shop, formuláře a uživatelské účty.
Návod je určen především pro Joomla! 5 a Joomla! 6. Názvy některých položek se mohou podle verze, překladu administrace nebo použité šablony mírně lišit. Před změnou nastavení vytvořte úplnou zálohu a důležité weby testujte nejprve na pracovní kopii.
Co je cache a proč dokáže Joomla! výrazně zrychlit
Při běžném načtení stránky musí Joomla! zpracovat požadovanou URL, načíst konfiguraci a rozšíření, provést databázové dotazy, sestavit výstup komponenty, vyrenderovat moduly a nakonec vytvořit výsledné HTML. U stejného veřejného obsahu se velká část této práce opakuje při každé návštěvě.
Cache ukládá již vypočítaný výsledek. Při dalším podobném požadavku může Joomla! sáhnout do mezipaměti místo toho, aby celý proces prováděla znovu. Výsledkem bývá kratší odezva serveru, nižší spotřeba procesoru a menší zatížení databáze.
- rychlejší generování opakovaně navštěvovaných stránek,
- nižší počet databázových dotazů,
- nižší zatížení PHP a databázového serveru,
- větší odolnost webu při krátkodobé špičce návštěvnosti,
- lepší uživatelský zážitek a potenciálně lepší Core Web Vitals.
Tři základní úrovně cache v Joomla!
V Joomla! se slovem cache označuje několik odlišných mechanismů. Je důležité vědět, který z nich právě nastavujete, protože každý ukládá jinou část stránky a přináší jiné riziko zastaralého nebo nesprávného obsahu.
Cache výstupu komponenty
Ukládá výstup hlavní komponenty stránky, například článku nebo blogu kategorie. O tom, zda lze konkrétní pohled cachovat, rozhoduje také komponenta.
Cache modulů
Ukládá výstup modulů, například drobečkové navigace, seznamu článků nebo vlastního HTML modulu, pokud modul cache podporuje.
Page Cache
Ukládá celé výsledné HTML stránky podle URL. Je nejagresivnější, ale u statického obsahu může přinést největší zrychlení.
1. Co udělat před zapnutím cache
Cache mění způsob, jakým web návštěvníkům předává obsah. Nejdříve proto zkontrolujte, které části stránky jsou statické a které závisí na uživateli, relaci, cookies, odeslaném formuláři nebo aktuálním obsahu košíku.
Vytvořte zálohu
Zálohujte soubory i databázi a ověřte, že zálohu umíte obnovit.
Změřte výchozí stav
Zaznamenejte TTFB a rychlost několika typických stránek před změnou.
Sepište dynamické stránky
Košík, pokladna, přihlášení, formuláře, profil, vyhledávání a personalizace.
Testujte jako host
Joomla! standardní cache používá pro nepřihlášené návštěvníky, proto se odhlaste.
2. Globální nastavení mezipaměti v Joomla!
Základní nastavení najdete v administraci přes Systém → Globální nastavení → Systém → Nastavení mezipaměti. Podle serveru a verze Joomla! zde uvidíte několik souvisejících voleb.
- Cache Handler: způsob nebo úložiště, kam se cache zapisuje.
- Cesta ke složce cache: volitelná vlastní cesta pro souborovou cache.
- Doba mezipaměti: globální životnost cache v minutách.
- Platform Specific Caching: oddělená cache podle platformy zařízení.
- Systémová cache: vypnutá, konzervativní nebo progresivní.
Pro první nasazení na běžném firemním webu obvykle postačí souborový handler, výchozí cesta, doba 15 až 30 minut a konzervativní režim. Toto není univerzální pravidlo, ale bezpečný výchozí bod pro další testování.
3. Konzervativní cache: doporučený výchozí režim
Konzervativní cache ukládá cachovatelný výstup komponent a jednotlivé moduly, které mají ve svém nastavení povoleno Použít globální nastavení. U každého podporovaného modulu můžete současně zvolit, že se cachovat nemá.
Tento režim poskytuje správci největší kontrolu. Statické moduly lze cachovat, zatímco dynamický obsah, například přihlašovací formulář, náhodný obsah nebo informace závislé na relaci, může mít nastaveno Bez mezipaměti.
Jak konzervativní cache zapnout
Otevřete Globální nastavení
Přejděte do části Systém a najděte Nastavení mezipaměti.
Zvolte konzervativní režim
U položky Systémová cache nastavte Zapnuto – konzervativní cache.
Nastavte životnost
Pro začátek použijte například 15 minut a později hodnotu upravte.
Prověřte moduly
U dynamických modulů zkontrolujte kartu Pokročilé a cache případně zakažte.
4. Progresivní cache: rychlejší, ale méně jemné kontroly
Progresivní cache stejně jako konzervativní režim pracuje s výstupem komponent. Rozdíl je především v modulech: Joomla! ukládá sadu modulů zobrazených na dané stránce společně a jednotlivý modul nemůže toto chování běžným nastavením Bez mezipaměti obejít.
Kdy může dávat smysl
Jednoduchý veřejný web s převážně statickým obsahem, bez personalizace, košíku, uživatelských funkcí a modulů závislých na relaci.
Kdy ji raději nepoužívat
E-shop, členská sekce, web s dynamickými formuláři, obsah podle cookies, náhodné moduly nebo složitá kombinace rozšíření třetích stran.
5. Plugin System – Page Cache
Plugin System – Page Cache ukládá celé výsledné HTML veřejné stránky. Při dalším požadavku na stejnou URL může Joomla! vrátit hotový dokument, aniž by znovu generovala výstup komponenty a modulů.
Plugin najdete přes Systém → Správa → Pluginy. Vyhledejte výraz „Page Cache“, otevřete systémový plugin a aktivujte jej až po nastavení potřebných výjimek.
- celá stránka se ukládá podle požadované URL,
- cache je určena pro nepřihlášené návštěvníky,
- platnost vychází z globální doby mezipaměti,
- plugin umožňuje vyloučit vybrané položky menu a URL,
- změna článku nemusí automaticky odstranit jeho starou stránku z Page Cache.
6. Jak nastavit výjimky z celostránkové cache
Page Cache smí ukládat pouze stránky, jejichž obsah je bezpečné sdílet mezi všemi nepřihlášenými návštěvníky. Stránky závislé na relaci, cookies, odeslaných datech nebo aktuálním stavu uživatele z cache vylučte.
Z Page Cache typicky vylučte
- košík, pokladnu, výběr dopravy a platby,
- přihlášení, registraci, odhlášení a obnovu hesla,
- uživatelský profil a členské stránky,
- kontaktní a poptávkové formuláře s individuálním potvrzením,
- výsledky interního vyhledávání,
- stránky s personalizovaným nebo geograficky odlišným obsahem,
- URL s údaji závislými na cookies nebo session,
- stránky, na kterých se často mění ceny, sklad nebo dostupnost.
V pokročilém nastavení pluginu použijte výjimky podle položek menu nebo URL. Po změně pravidel cache vyčistěte a test proveďte v anonymním okně prohlížeče.
7. Cache jednotlivých modulů
U konzervativní cache rozhoduje o ukládání výstupu každý modul samostatně, pokud tuto funkci podporuje. Otevřete modul a na kartě Pokročilé hledejte volbu Ukládání do mezipaměti.
Nejčastěji můžete zvolit:
- Použít globální: modul se řídí globální konzervativní cache.
- Bez mezipaměti: výstup modulu se při každém požadavku vytvoří znovu.
- Doba cache: individuální doba platnosti modulu, obvykle v sekundách.
Moduly, u kterých cache vždy prověřte
- přihlašovací modul a informace o přihlášeném uživateli,
- mini košík a přehled objednávky,
- náhodný obsah nebo losované bannery,
- aktuální počet položek, návštěv nebo skladových zásob,
- formuláře s bezpečnostním tokenem,
- obsah měněný podle jazyka, oprávnění, cookies nebo polohy.
8. Cache výstupu komponent není plně pod kontrolou správce
Při konzervativní i progresivní cache může Joomla! ukládat výstup pohledu hlavní komponenty. Zda je konkrétní stránka cachovatelná, ale určuje také samotná komponenta ve svém kódu.
Jádro Joomla! například rozlišuje typ pohledu, parametry URL, způsob požadavku a stav uživatele. Rozšíření třetích stran mohou cache podporovat správně, částečně nebo vůbec. Správce proto nemá v globálním nastavení univerzální přepínač pro každý jednotlivý pohled komponenty.
9. Jak nastavit správnou dobu platnosti cache
Příliš krátká cache se často obnovuje a její přínos je menší. Příliš dlouhá může návštěvníkům zobrazovat zastaralý obsah. Správná hodnota závisí na četnosti změn, návštěvnosti a typu stránky.
5–15 minut
Dynamický obsah, často měněné články, ceny nebo katalog s častými úpravami.
15–60 minut
Běžný firemní web, blog a obsah aktualizovaný několikrát týdně.
Několik hodin
Stabilní informační stránky, dokumentace nebo málo měněný obsah.
Delší doba
Pouze u skutečně statických částí a s jasným procesem ručního či automatického invalidování.
10. Cache Handler: kam Joomla! mezipaměť ukládá
Položka Cache Handler určuje úložiště cache. Na běžném hostingu je nejčastější a výchozí souborová cache. Dostupnost dalších handlerů závisí na konfiguraci serveru, nainstalovaných PHP rozšířeních a konkrétní verzi Joomla!.
Souborová cache
Jednoduchá, běžně dostupná a vhodná pro většinu menších a středních webů. Vyžaduje správně zapisovatelnou cache složku a rychlé diskové úložiště.
Síťová nebo paměťová cache
Redis či Memcached mohou pomoci ve výkonnějším nebo víceuzlovém prostředí, ale musí být správně nainstalované, zabezpečené a nakonfigurované správcem serveru.
11. Cesta ke složce cache a oprávnění
Při souborovém handleru ukládá Joomla! data do cache složky. Vlastní cestu nastavujte pouze tehdy, když k tomu máte konkrétní důvod a znáte konfiguraci serveru. Ve většině případů je vhodné ponechat výchozí hodnotu.
- složka musí existovat nebo ji musí být možné vytvořit,
- PHP do ní musí mít právo zapisovat a mazat soubory,
- cesta musí odpovídat skutečné absolutní cestě serveru,
- cache nesmí být sdílena mezi nesouvisejícími weby,
- na více serverech musí být promyšlené společné nebo distribuované úložiště.
12. Platform Specific Caching: většinou ji nepotřebujete
Volba Platform Specific Caching umožňuje vytvářet odlišné varianty cache pro různé platformy zařízení. Historicky měla význam u webů, které odesílaly jiné HTML pro desktop a mobil.
Většina moderních šablon používá responzivní design a všem zařízením posílá stejnou strukturu stránky, kterou upraví pomocí CSS. V takovém případě obvykle ponechte platform-specific cache vypnutou, jinak pouze vytváříte více cache variant a snižujete počet zásahů do stejného záznamu.
13. Cache v prohlížeči návštěvníka
Plugin Page Cache může podle konfigurace pracovat také s cache prohlížeče. Ta je odlišná od interní cache Joomla!: kopie odpovědi se ukládá na zařízení návštěvníka a při opakované návštěvě ji může prohlížeč použít bez nového načtení ze serveru.
Browser cache se hodí pro stabilní veřejný obsah, ale její invalidace je složitější. Když návštěvník drží starou kopii příliš dlouho, běžné vyčištění cache v administraci Joomla! nemusí jeho lokální kopii okamžitě odstranit.
14. Vymazat cache versus odstranit prošlou cache
Joomla! nabízí dvě podobně znějící údržbové operace. Každá je vhodná pro jinou situaci.
Vymazat mezipaměť
Odstraní vybrané cache skupiny včetně stále platných souborů. Web může být krátce pomalejší, než se cache znovu naplní.
Odstranit prošlou mezipaměť
Kontroluje jednotlivé záznamy a maže pouze ty, kterým skončila platnost. Operace může být náročnější, ale platná cache zůstane zachována.
Kdy vymazat celou cache
- po změně šablony, přepisů nebo důležitého CSS,
- po úpravě pluginu, modulu nebo layout override,
- když se stále zobrazuje stará verze článku,
- po změně jazyků, menu nebo přístupových úrovní,
- při hledání problému, který může souviset s neaktuálním výstupem.
15. Jak ověřit, že cache opravdu funguje
Test provádějte jako nepřihlášený návštěvník v anonymním okně. Přihlášený správce nemusí standardní cache Joomla! používat, takže jeho zkušenost neodpovídá běžnému návštěvníkovi.
1. Vyčistěte cache
Odstraňte staré záznamy a otevřete sledovanou stránku jako host.
2. Změřte první načtení
První požadavek cache vytvoří a může být pomalejší.
3. Opakujte požadavek
Druhé načtení stejné URL porovnejte bez přihlášení a bez změny parametrů.
4. Zkontrolujte cache skupiny
V administraci nebo souborovém systému ověřte vznik příslušných záznamů.
U Page Cache lze provést jednoduchý test se zkušebním článkem: stránku navštivte,
článek upravte a znovu otevřete jako host. Pokud se stále zobrazuje starší verze,
Page Cache funguje. Potom skupinu page vymažte a ověřte nový obsah.
16. Nejčastější problémy způsobené cache a jejich řešení
Po úpravě se stále zobrazuje starý obsah
Vymažte odpovídající cache skupinu, případně Page Cache. Zkontrolujte také cache serveru, reverzní proxy, CDN a lokální cache prohlížeče.
Formulář hlásí neplatný bezpečnostní token
Stránka s formulářem pravděpodobně obsahuje token uložený příliš dlouho nebo sdílený mezi návštěvníky. Vylučte ji z Page Cache a u příslušného modulu zakažte cache.
Košík zobrazuje nesprávný počet produktů
Mini košík, košík nebo celý objednávkový proces je cachovaný. Zakažte cache modulu a z Page Cache vylučte všechny URL objednávky.
Náhodný obsah se nemění
Modul je uložen v cache a během její platnosti vrací stejný výstup. Nastavte u něj Bez mezipaměti nebo přiměřeně krátkou životnost.
Cache se nevytváří
Ověřte, že testujete jako host, složka je zapisovatelná, cache je skutečně zapnutá a použitá komponenta či modul daný typ cache podporuje.
Po zapnutí cache se web nezrychlil
Úzkým místem mohou být obrázky, externí skripty, síť, vykreslování prohlížeče nebo už existující serverová cache. Změřte TTFB zvlášť od celkového času načtení.
17. Cache v Joomla! e-shopu: nejčastější zdroj problémů
E-shop kombinuje veřejný katalog s obsahem závislým na relaci zákazníka. Kategorie a informační stránky mohou být vhodné pro určitou úroveň cache, ale košík, doprava, platba, přihlášení a objednávka musí vždy zobrazovat individuální aktuální data.
- zakažte cache modulu mini košíku,
- vylučte košík a pokladnu z Page Cache,
- vylučte přihlášení a zákaznický účet,
- testujte ceny, slevy, měny a daňová pravidla,
- ověřte aktualizaci skladových stavů,
- testujte anonymního i přihlášeného zákazníka,
- proveďte objednávku se všemi používanými dopravami a platbami.
18. Cache pro vývojáře Joomla! rozšíření
Vývojáři mohou kromě běžné cache pohledů a modulů používat Cache API také pro výsledky náročných operací. Callback cache například nejprve hledá výsledek pod unikátním identifikátorem. Pokud ho nenajde nebo jeho platnost vypršela, spustí předanou funkci, výsledek uloží a vrátí volajícímu kódu.
Správně navržené rozšíření musí řešit nejen vytvoření cache, ale také její invalidaci. Když správce upraví položku, která ovlivňuje uložený výstup, komponenta musí vyčistit správnou cache skupinu.
- vytvářejte jednoznačné cache klíče podle všech vstupů,
- necachujte citlivá data společně pro různé uživatele,
- při zápisu do databáze odstraňte související cache skupinu,
- nastavujte realistickou dobu platnosti,
- počítejte s více jazyky, přístupovými úrovněmi a variantami URL,
- testujte chování při prázdné, platné i prošlé cache.
Doporučená nastavení cache podle typu webu
Jednoduchý firemní web
Konzervativní cache, 15–60 minut, statické moduly Použít globální. Page Cache lze otestovat s výjimkami pro formuláře.
Obsahový web nebo magazín
Konzervativní cache, kratší životnost u často měněných modulů. Page Cache pouze s procesem vyčištění po publikaci článku.
E-shop
Konzervativní cache s individuálními výjimkami. Page Cache pouze pro bezpečně ověřené veřejné URL a nikdy pro košík, účet a objednávku.
Členský nebo komunitní web
Opatrné použití cache veřejných částí. Nespoléhejte na Page Cache u personalizovaného obsahu a důkladně testujte přístupová oprávnění.
Bezpečný postup nasazení cache krok za krokem
1. Záloha
Vytvořte úplnou zálohu souborů a databáze.
2. Inventura
Sepište dynamické moduly, formuláře, uživatelské funkce a e-shopové URL.
3. Konzervativní cache
Zapněte ji s kratší dobou platnosti a otestujte veřejné stránky.
4. Moduly
U dynamických modulů nastavte Bez mezipaměti.
5. Měření
Porovnejte TTFB a zatížení serveru před zapnutím a po něm.
6. Page Cache
Teprve potom ji otestujte na statických stránkách s přesnými výjimkami.
7. Funkční test
Prověřte formuláře, přihlášení, vyhledávání a celý nákupní proces.
8. Monitoring
Po aktualizacích a změnách webu pravidelně ověřujte, že výjimky stále platí.
Kontrolní seznam nastavení cache v Joomla!
- Před změnou byla vytvořena úplná záloha webu.
- Byla změřena rychlost a TTFB před zapnutím cache.
- Je znám rozdíl mezi cache komponent, modulů a celých stránek.
- Pro první test byla zvolena konzervativní cache.
- Globální doba platnosti odpovídá četnosti změn obsahu.
- Byl zkontrolován Cache Handler a zapisovatelnost cache složky.
- Platform Specific Caching není zapnutá bez skutečné potřeby.
- U každého dynamického modulu byla zkontrolována volba cache.
- Byl zohledněn rozdíl mezi minutami v globálním nastavení a sekundami u modulů.
- Page Cache má nastavené výjimky podle menu a URL.
- Z Page Cache je vyloučen košík a pokladna.
- Z Page Cache je vyloučeno přihlášení, registrace a uživatelský účet.
- Formuláře byly otestovány po vypršení i po vyčištění cache.
- Vyhledávání a stránky s parametry URL vracejí správné výsledky.
- Vícejazyčný web zobrazuje správný jazyk a moduly.
- Po uložení článku se návštěvníkům zobrazí aktuální obsah.
- Byla otestována anonymní návštěva v novém soukromém okně.
- U e-shopu byla provedena kompletní testovací objednávka.
- Je znám postup pro ruční vymazání jednotlivých cache skupin.
- Byla odlišena Joomla! cache od serverové, CDN a browser cache.
- Po zapnutí cache byl znovu změřen výkon webu.
- Nastavení je zdokumentované pro budoucí správu a aktualizace.
Časté dotazy k cache v Joomla!
Jaký typ cache mám v Joomla! zapnout jako první?
Pro běžný firemní nebo obsahový web začněte konzervativní cache. Umožňuje řídit cache jednotlivých podporovaných modulů a bývá bezpečnějším výchozím bodem než progresivní nebo celostránková cache.
Jaký je rozdíl mezi konzervativní a progresivní cache?
Oba režimy mohou cachovat výstup komponent. Konzervativní režim ukládá jednotlivé podporované moduly podle jejich nastavení. Progresivní režim ukládá sadu modulů na stránce společně a individuální zákaz cache modulu se neuplatní stejným způsobem.
Je Page Cache rychlejší než konzervativní cache?
Může být, protože vrací celé uložené HTML bez opětovného sestavení stránky. Je však také rizikovější pro dynamický obsah, formuláře, košík a stránky závislé na relaci nebo cookies.
Funguje cache Joomla! pro přihlášené uživatele?
Standardní konzervativní, progresivní a celostránková cache Joomla! je určena pro nepřihlášené návštěvníky. Serverové nebo externí cache mohou mít vlastní pravidla, proto je nutné posuzovat každou vrstvu zvlášť.
Jaká je vhodná doba cache?
Pro první test běžného webu použijte přibližně 15 až 30 minut. U často měněného obsahu zvolte kratší dobu, u stabilních stránek ji lze po ověření prodloužit.
Proč se po změně článku stále zobrazuje starý text?
Pravděpodobně je aktivní Page Cache, serverová cache, CDN nebo cache prohlížeče. Vymažte odpovídající Joomla! cache skupinu a zkontrolujte také další vrstvy mezipaměti.
Proč formulář po zapnutí cache hlásí neplatný token?
Stránka nebo modul s formulářem mohl uložit bezpečnostní token do cache. Vylučte URL formuláře z Page Cache a u modulu nastavte Bez mezipaměti.
Mohu zapnout Page Cache ve VirtueMartu?
Pouze velmi opatrně a jen pro bezpečně otestované veřejné stránky. Košík, pokladna, přihlášení, uživatelský účet a objednávkový proces musí být z celostránkové cache vyloučené.
Jak zjistím, jestli cache funguje?
Testujte jako nepřihlášený návštěvník. Po prvním otevření stránky porovnejte další načtení stejné URL a zkontrolujte vznik příslušných cache skupin nebo souborů.
Je lepší souborová cache nebo Redis?
Pro většinu menších a středních webů je souborová cache jednoduchá a dostačující. Redis může pomoci ve výkonnějším nebo distribuovaném prostředí, ale vyžaduje správnou serverovou konfiguraci.
Musím po každé úpravě webu ručně mazat cache?
Ne vždy. Některé komponenty při uložení obsahu související cache vyčistí. Page Cache však nemusí po změně článku odstranit všechny uložené stránky, proto může být ruční vyčištění stále potřeba.
Proč se po vymazání cache některé skupiny okamžitě vrátí?
Joomla! nebo administrace je znovu vytvoří už při následujícím načtení. To neznamená, že mazání selhalo; pouze se okamžitě vygenerovala nová cache.
Může cache zhoršit zabezpečení webu?
Ano, pokud uloží a sdílí obsah určený konkrétnímu uživateli, bezpečnostní token nebo citlivé údaje. Proto musí být personalizované a uživatelské stránky z veřejné celostránkové cache vyloučené.
Shrnutí: cache v Joomla! nastavujte postupně a podle typu obsahu
Joomla! nabízí tři hlavní úrovně cache: výstup komponent, výstup modulů a celé HTML stránky. Pro většinu běžných webů je nejbezpečnějším začátkem konzervativní cache s kratší dobou platnosti a individuální kontrolou modulů.
Progresivní a zejména celostránková cache mohou web zrychlit více, ale vyžadují důkladné testování. Košík, objednávka, přihlášení, uživatelský účet, formuláře a personalizovaný obsah musí zůstat mimo společnou Page Cache.
Cache není jednorázové nastavení. Po instalaci rozšíření, změně šablony, aktualizaci Joomla! nebo úpravě objednávkového procesu znovu ověřte výjimky, aktuálnost obsahu a celý web otestujte jako nepřihlášený návštěvník. U důležitého webu lze správné nastavení zahrnout do pravidelné správy a údržby webových stránek.