Modul 1 · 1.2
Pod pokličkou: webový server, PHP a databáze
Modul 1: Jak WordPress funguje · Doba čtení: 8 minut
Cíl lekce: Po této lekci dokážete krok za krokem vysvětlit, jak se z požadavku na stránku ve WordPressu stane HTML stránka, a kde cache tuto cestu zkracuje.
Klíčové pojmy: webový server (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, dotaz (query), index.php, hierarchie šablon, dynamický vs statický, TTFB
Statická a dynamická stránka
U statického webu je každá stránka uložena jako hotový soubor na serveru. Webový server soubor vezme a odešle. To je rychlé a jednoduché, ale každá změna znamená nový soubor.
WordPress je dynamický: stránka vzniká až ve chvíli, kdy si ji někdo vyžádá. Neexistuje žádný soubor contact.html. Existuje kus textu v databázi, šablona se vzory stránek a sada PHP kódu, která obojí spojí dohromady. To přináší pohodlí (text upravíte přímo v prohlížeči), ale u každé návštěvy to stojí výpočetní práci. Když tomuto výpočtu porozumíte, pochopíte později i to, proč je web pomalý, proč caching znamená tak velký rozdíl a proč upgrade PHP může něco rozbít.
Cesta požadavku na stránku
Představte si, že návštěvník otevře https://example.com/contact/. Stane se toto:
- DNS: prohlížeč vyhledá IP adresu domény
example.com(viz kurz DNS). Vytvoří zabezpečené spojení s touto adresou. - Webový server: na serveru běží webový server, například LiteSpeed, Apache nebo nginx. Ten požadavek přijme. Pokud existuje skutečný soubor nebo složka s daným názvem (obrázek, styl), pošle ho rovnou. Pokud ne, platí pravidlo ze souboru
.htaccess(u LiteSpeed a Apache) nebo z konfigurace nginx: „vše, co neexistuje, předej souboruindex.php“. - PHP:
index.phpje soubor PHP. Webový server ho nechá spustit pomocí PHP, programovacího jazyka, ve kterém je WordPress napsaný. PHP nejprve načtewp-config.php(nastavení, včetně údajů o databázi), poté zbytek WordPressu, poté všechny aktivní pluginy a aktivní šablonu. - Databáze: WordPress zjišťuje, jaký obsah patří k adrese
/contact/, a klade dotazy databázi (MariaDB nebo MySQL): která stránka má slugcontact, jaká jsou nastavení webu, k jakému menu patří? Takový dotaz se nazývá query. Jednoduchá stránka snadno vyžádá desítky dotazů, s pluginy jich může být i několik set. - Šablona: WordPress vybírá, který vzor šablony stránku zobrazí. Řídí se přitom hierarchií šablon: pro stránku se slugem
contactWordPress nejprve hledá vzorpage-contact, potépage-<id>(číslo stránky), potépage, potésingulara nakonecindex. Vítězí první, který existuje. - Návrat HTML: výsledkem je HTML stránka, kterou PHP předá webovému serveru, a ten ji odešle prohlížeči.
- Prohlížeč přečte HTML a poté ještě stáhne styly, skripty, písma a obrázky. Ty jsou obyčejnými soubory, takže přicházejí přímo z webového serveru (nebo z cache).
Mezi krokem 2 a krokem 6 je čas, který server potřebuje k vytvoření stránky. Projevuje se jako TTFB (time to first byte): čas mezi požadavkem a prvním bajtem odpovědi. U dobře nastaveného webu bývá hluboko pod jednu sekundu. V modulu 6 si to změříte sami.
Proč záleží na každém pluginu
V kroku 3 se všechny aktivní pluginy načítají při každém požadavku. I když daný plugin na této stránce nic nedělá. Plugin pro fotogalerii se tedy načte i tehdy, když někdo otevře Vaši kontaktní stránku. Každý plugin může provádět další dotazy, načítat další kód a přidávat do stránky další skripty.
To vysvětluje dvě věci, se kterými se v tomto kurzu setkáte častěji:
- Méně pluginů je zpravidla rychlejší. Ne proto, že by záleželo na počtu samotném, ale proto, že každý plugin může při každém požadavku vykonávat práci.
- Jeden nefunkční plugin dokáže položit celý web. Pokud se v kroku 3 něco pokazí (například plugin, který nefunguje s novou verzí PHP), PHP se ke kroku 6 vůbec nedostane. Návštěvník uvidí bílou stránku nebo hlášku „Na tomto webu došlo ke kritické chybě“ (lekce 5.4).
Odkud pochází PHP a databáze
PHP a databáze běží na serveru Vašeho hostingu. Verzi PHP si obvykle volíte sami v ovládacím panelu (v DirectAdminu se to jmenuje Select PHP version, viz lekce 8.4). Databázi vytváříte při instalaci; instalátor to často udělá za Vás (lekce 2.2).
Několik věcí, které si stojí za to zapamatovat:
- Verze PHP: každá nová verze PHP je rychlejší a bezpečnější, ale starý kód na ní může přestat fungovat. wordpress.org v současnosti doporučuje PHP 8.3 nebo vyšší (stav listopad 2026).
- Databáze: wordpress.org doporučuje MariaDB 10.11 nebo vyšší, případně MySQL 8.0 nebo vyšší. MariaDB je odnož MySQL; pro WordPress to nehraje žádnou roli.
- Databáze bývá většinou na stejném serveru (
DB_HOSTje paklocalhost). U větších instalací hostingu může být na samostatném serveru.
Cache: zkrácení cesty
Pokud sto návštěvníků požádá o stejnou kontaktní stránku, bez cache ji WordPress vytvoří stokrát znovu. Pokaždé stejné dotazy, stejná šablona, stejné HTML. Cache stránek uchová HTML po prvním vytvoření. Další návštěvník dostane uloženou verzi: kroky 3 až 6 odpadají.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLProto caching přináší největší zrychlení (lekce 6.2). Vysvětluje to i častý zdroj zmatku: „upravil jsem text, ale pořád vidím starou verzi.“ Tehdy dostáváte uloženou verzi; po vymazání cache uvidíte novou.
Ne všechno smí pocházet z cache. Přihlášený administrátor, nákupní košík nebo stránka s pokladnou vypadají pro každého návštěvníka jinak. Dobrý cachovací plugin tyto případy vynechává.
Hlavičky: co Vám server prozradí
Každá odpověď webového serveru začíná hlavičkami (headers), ještě před samotným HTML. Na stránce je neuvidíte, ale uvidíte je ve vývojářských nástrojích prohlížeče (F12, karta Síť, klikněte na první požadavek). Příklad:
HTTP/2 200
server: LiteSpeed
content-type: text/html; charset=UTF-8
link: <https://example.com/wp-json/>; rel="https://api.w.org/"
x-litespeed-cache: hitserverříká, který webový server odpovídá.linkswp-jsonprozrazuje, že jde o WordPress.x-litespeed-cache: hitznamená, že tato stránka pochází z cache LiteSpeed. Jiné cache používají jiné názvy, napříkladx-cache: HITnebocf-cache-status: HITu Cloudflare.
Tyto hlavičky nemusíte znát nazpaměť. Ale kdo je umí číst, dokáže sám najít spoustu problémů.
Shrnutí
- WordPress vytváří každou stránku v okamžiku požadavku: webový server, PHP, pluginy, databáze, šablona, HTML.
- Při každém požadavku se načítají všechny aktivní pluginy; jeden nefunkční plugin dokáže zastavit celý web.
- Hierarchie šablon určuje, který vzor šablony stránku zobrazí.
- Cache stránek přeskakuje výpočetní práci tím, že vrací uložené HTML. Přihlášení uživatelé a nákupní košíky do této cache nepatří.
- Hlavičky odpovědi prozrazují, který webový server odpovídá a zda stránka pocházela z cache.
Kvíz
Úkol
Úkol A1.2: Přečtěte si hlavičky svého webu. Otevřete svůj vlastní web (nebo wordpress.org) pomocí vývojářských nástrojů prohlížeče (F12, karta Síť, obnovte stránku, klikněte na první požadavek). Vyplňte, jaký webový server je uveden v hlavičce server (nebo „žádný“, pokud tam chybí), a zda se v odpovědi nachází hlavička, která uvádí, že stránka pochází z cache (jaký má název a jakou hodnotu). Program vyžádá stejnou stránku a porovná výsledek.
Další čtení
Tyto články popisují jednotlivé kroky v panelech WebOké; v jiných panelech fungují obdobně.
- Příručka k DirectAdmin 1.9: Pojmy vysvětlené: doména, subdoména, pointer, DNS, e-mailová schránka a databáze
- Příručka k DirectAdmin 14.1: Výběr verze PHP (Select PHP version)
- Bezplatný DNS kurz 1.4: Cesta DNS dotazu
- Hierarchie šablon (developer.wordpress.org, anglicky): https://developer.wordpress.org/themes/basics/template-hierarchy/
