Univerzitní weby běží většinu roku bez potíží a zadrhávají se jen v hrstce vytížených dnů. Příčinou je zřídka poddimenzovaný server. Jde spíš o to, že v těchto dnech už většinu stránek nelze obsloužit z uložené kopie. Tento článek srozumitelně vysvětluje, jak Drupal ukládá stránky, co CDN zrychlí a co ne, a kde začít, pokud chcete, aby web nápor vydržel.

Stránka se v březnu načte za půl sekundy a první ráno zápisu jí to trvá deset sekund. Stejný web, stejný kód. Změnilo se jen to, kolik stránek musel server ten den sestavit od nuly. Zrychlení webu na Drupalu je především o snížení tohoto čísla.

Kdy se univerzitní web skutečně zpomalí?

Většinu roku není většina návštěvníků přihlášená. Uchazeči procházejí studijní programy, rodiče otevírají kontaktní stránku, vyhledávače procházejí sekci aktualit. Všechny tyto návštěvy lze obsloužit z uložené kopie a server téměř nepracuje.

Ve vytížených dnech se tento poměr mění. Velkou část návštěvníků teď tvoří přihlášení studenti. Jakmile se někdo přihlásí, stránka se stává osobní a kopie uložená pro všechny už nevyhovuje. Server začne současně sestavovat tisíce stránek od nuly.

K tomu se přidávají dvě další věci. Počty volných míst a rozvrhy se načítají z jiného systému a nelze je držet dlouho, protože nesmějí zastarat. A když se změní akademický kalendář nebo celouniverzitní oznámení, musí se znovu sestavit každá stránka, která tyto informace zobrazuje.

Když se všechny tři faktory sejdou ve stejném týdnu, web se zpomalí. Cílem není ušetřit pár milisekund v průměrném dni. Cílem je přečkat tyto dny bez výpadku.

Jak Drupal ukládá stránky

Jakmile Drupal stránku sestaví, uchová si její kopii. Další člověk, který o stejnou stránku požádá, dostane uloženou kopii, místo aby čekal na její nové sestavení. To je hlavní důvod, proč web na Drupalu působí rychle, a funguje to hned po instalaci.

Pro nepřihlášené návštěvníky

To je snadný případ. Všichni vidí stejnou stránku, takže jedna uložená kopie obslouží každého. Stránky studijních programů, aktuality a kontakty se dostanou k tisícům lidí ze stejné kopie a server nedělá téměř nic.

Pro přihlášené uživatele

Ve chvíli, kdy se někdo přihlásí, patří část stránky jen jemu: jeho jméno, jeho oznámení, jeho předměty. Jednu kopii uloženou pro všechny už použít nelze.

Drupal to řeší rozdělením stránky na dvě části. Části, které jsou pro všechny stejné, nadále ukládá a při každé návštěvě znovu sestavuje jen ty osobní. Znovu se tak sestavuje jen zlomek stránky, ne celá.

Pokud jsou i tyto osobní části pomalé, nastupuje BigPipe. Tento přístup byl původně vyvinut ve Facebooku a Drupal ho převzal do svého jádra. Princip je jednoduchý: sdílené části stránky se odešlou okamžitě a osobní části následují, jakmile jsou hotové. Návštěvník tak sleduje, jak se stránka plní, místo aby zíral na prázdnou obrazovku. Podle dokumentace Drupalu je BigPipe ve standardní instalaci ve výchozím stavu zapnutý od verze 8.5, takže na většině webů už běží.

 Nepřihlášení návštěvníciPřihlášení uživatelé
Jak stránka dorazíZ uložené kopieSdílené části uložené, osobní části sestavené znovu
Zátěž serveruTéměř žádnáUrčitá práce při každé návštěvě
Riziko ve vytíženém dniNízkéPrávě tady leží zátěž

Co se stane, když se obsah změní

Obtížné na ukládání stránek není naplnit úložiště. Obtížné je obnovit správné stránky ve správnou chvíli. Na univerzitním webu se stejná informace objevuje na desítkách míst. Jméno jednoho akademika je zároveň v seznamu katedry, na stránce předmětu i v aktualitě.

Drupal si zaznamenává, na jakém obsahu která uložená stránka závisí. Když se tento obsah změní, obnoví jen stránky, které na něm závisejí, a zbytek nechá být. Změna jednoho jména se tak nerozšíří po celém webu.

Skutečnou chybou je tu zvyk mazat po každé úpravě všechno. To nutí znovu sestavit celý web a obvykle se to děje v tu nejhorší možnou chvíli. Řešením je přestat brát toto tlačítko jako součást každodenní rutiny.

Co CDN zrychlí a co ne

CDN doručuje soubory webu ze serverů rozmístěných po celém světě, takže obrázky, videa a fonty přicházejí z místa blízko návštěvníka. Na univerzitních webech tvoří tyto soubory většinu objemu stránky, takže přínos je skutečný.

Na straně Drupalu to zajišťuje modul CDN. Jeden detail ovlivňuje plánování: stabilní verze funguje s Drupalem 9 a 10, zatímco podpora Drupalu 11 se stále testuje. Instituce, která už Drupal 11 používá, by to měla vědět předem.

Po instalaci často následuje běžná chyba: jakmile je CDN nasazené, předpokládá se, že problém s výkonem je vyřešen. CDN ale distribuuje hotové soubory, stránky nesestavuje. Osobní stránka, kterou vidí přihlášený student, se pokaždé sestavuje na vlastním serveru instituce, a právě tam ve vytíženém dni leží zátěž.

Stránky univerzitních IT oddělení to říkají otevřeně. Pokyny k Drupalu jedné velké veřejné univerzity upozorňují správce webů, že její CDN se vztahuje jen na nepřihlášené návštěvníky a přihlášení uživatelé ho zcela obcházejí. Stanford jde v tomto rozlišení ještě o krok dál. Jeho IT služby popisují centrálně spravovanou platformu Drupal pro weby kateder a pracovišť a vedle ní samostatnou možnost hostingu pro weby s vysokou návštěvností. Ne každý web se tedy řeší stejně.

Stránky s živými daty

Počty volných míst, rozvrhy a výsledky pocházejí z jiného systému a nesmějí zastarat. Protože je nelze ukládat, jsou to nejnáročnější stránky celého webu.

Pomohou tři jednoduchá opatření. Zaprvé oddělte živý prvek od zbytku stránky, aby se pokaždé znovu sestavovala jen tato malá část a vše kolem zůstalo uložené. Zadruhé mu dejte krátkou životnost místo žádné. Počet volných míst starý nejvýše minutu je ve většině situací přijatelný a tato minuta ušetří druhému systému tisíce dotazů. Zatřetí rozhodněte, co stránka zobrazí, když druhý systém neodpovídá. Zobrazit poslední známou hodnotu s časovým údajem je lepší než nezobrazit nic.

Datové stránce těchto stránek jsme se věnovali v článku Integrace Drupalu se studijním informačním systémem.

Provoz mnoha webů na jedné platformě

Mnoho univerzit provozuje desítky webů fakult a pracovišť na jedné společné instalaci. Z toho plyne rozšířený předpoklad: když weby sdílejí platformu, musí sdílet i uložené kopie. Nesdílejí. Každý web si drží vlastní.

To má dva důsledky. Zlepšení provedené na jednom webu se na ostatní samo nepřenese. A protože weby na společném serveru sdílejí i jeho prostředky, vytížený týden jedné katedry může zpomalit stránky jiné katedry.

Širším výhodám a nevýhodám tohoto uspořádání se věnujeme v článku Správa univerzitních webů pomocí Drupal multisite. Z hlediska výkonu je praktický závěr jasný: zjistěte, které weby mají špičky, a plánujte pro ně zvlášť.

Co měřit

Měřicí nástroje mají slepé místo, o kterém je dobré vědět. Většina z nich testuje web bez přihlášení, takže nikdy nevidí stránky, které ve vytíženém dni selhávají. Úvodní stránka může dosáhnout perfektního skóre, zatímco obrazovka zápisu předmětů padá.

Proto jsou potřeba dva pohledy. První zahrnuje stránky, které návštěvníci vidí bez přihlášení. Ty hodnotí metriky rychlosti od Googlu a promítají se do pořadí ve vyhledávání; věnovali jsme se jim v článku SEO pro Drupal. Druhý zahrnuje stránky, které vidí přihlášení uživatelé, měřené na serveru, nikoli v prohlížeči, a právě tam obvykle leží skutečný problém.

Nejužitečnější měření už máte k dispozici. Serverové logy z vašeho nejvytíženějšího týdne v loňském roce vám řeknou víc než jakýkoli testovací nástroj. Je v nich zaznamenáno, které stránky byly v kterou hodinu požadovány a které požadavky se nikdy nedokončily.

Kde začít

Osvědčuje se začít alespoň měsíc před špičkou a postupovat v tomto pořadí.

Nejprve ověřte, že je nastavení cache zapnuté. Je to kontrola na půl hodiny, ale na webech, kde bylo něco vypnuté, přinese ze všech kroků největší rozdíl.

Poté projděte stránky, které vidí přihlášení uživatelé, a zjistěte, které jejich části jsou skutečně osobní. Na většině webů jich je méně, než se čekalo, a vše ostatní lze učinit ukládatelným.

Potom oddělte prvky zobrazující živá data, každému dejte rozumnou životnost a rozhodněte, co každý z nich zobrazí, když druhý systém není dostupný.

Nakonec proveďte test podle vzoru nejvytíženější hodiny loňského roku. Tento test musí běžet jako přihlášený uživatel, jinak se stránky, které problém způsobují, nikdy neprověří.

Spolu s prací se vyplatí nastavit i očekávání. Drupal vám tu dává silné nástroje, ale nepřicházejí vyladěné pro vaši instituci. Rozhodnutí, jak zastaralá smí která informace být, je institucionální, nikoli technické, a přijímá se za účasti studijního oddělení.

Platformy na Drupalu, které tým Drupal4edu ze společnosti Drupart vytváří pro instituce, jako jsou Univerzita Yeditepe, Univerzita Istinye a Univerzita Medipol, jsou nastavené tak, aby právě tímto způsobem tyto špičky zvládly. Více o našem přístupu se dočtete na stránce Drupal ve vysokém školství.

Časté dotazy k rychlosti webů na Drupalu

Vyřeší zpomalení větší server?

Do určité míry ano, ale je to nejdražší cesta. Většina stránek, které ve vytížených dnech selhávají, se sestavuje znovu, protože nemohou pocházet z uložené kopie. Se správně nastavenou cache zvládne stejný server mnohem více návštěvníků. Rozumné pořadí je nejprve zkontrolovat nastavení, učinit ukládatelným vše, co není osobní, a teprve potom řešit hardware, pokud to stále nestačí.

Stačí samotné CDN?

Ne. CDN distribuuje obrázky, videa a fonty, čímž znatelně snižuje objem stránky. Osobní stránka, kterou vidí přihlášený student, se ale v každém případě sestavuje na vlastním serveru instituce, a právě tam ve vytíženém dni leží zátěž. Brát CDN jako užitečný doplněk, nikoli jako hlavní řešení, vede k realističtějšímu výsledku.

Lze živé údaje, jako jsou počty volných míst, vůbec ukládat?

Krátkodobě ano a ve většině případů by se tak mělo dít. Počet volných míst starý nejvýše minutu je obvykle přijatelný a tato minuta zabrání tisícům dotazů do druhého systému. Podstatné je zvolit životnost uvážlivě a dohodnout ji se studijním oddělením. Stejně důležité je, aby stránka nezůstala prázdná, když druhý systém není dostupný, a místo toho zobrazila poslední známou hodnotu s časovým údajem.

Měla by se cache mazat po každé změně?

Ne, a tohoto zvyku se vyplatí zbavit. Drupal si zaznamenává, na jakém obsahu která uložená stránka závisí, a když se něco změní, dotčené stránky obnoví sám. Smazání všeho nutí znovu sestavit celý web, a to se obvykle stane v nejvytíženější chvíli. Toto tlačítko si nechte pro výjimečné situace a nedělejte z něj každodenní reflex.

Poslední aktualizace: 05.10.2026 09:06