Modul 1 · 1.2
Slovenčina
Pod kapotou: webový server, PHP a databáza
Modul 1: Ako funguje WordPress · Čas čítania: 8 minút
Cieľ lekcie: Po tejto lekcii dokážete krok za krokom vysvetliť, ako sa požiadavka na stránku vo WordPresse premení na HTML stránku a kde v tomto procese skracuje cestu cache.
Kľúčové pojmy: webový server (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, query, index.php, hierarchia šablón, dynamický vs statický, TTFB
Statická a dynamická stránka
Pri statickej webovej stránke je každá stránka uložená na serveri ako hotový súbor. Webový server tento súbor jednoducho vezme a odošle. Je to rýchle a jednoduché, ale každá zmena znamená nový súbor.
WordPress je dynamický: stránka vznikne až v momente, keď o ňu niekto požiada. Neexistuje žiadny súbor contact.html. Existuje kus textu v databáze, téma so šablónami a sada PHP kódu, ktorá tieto dve veci spojí dohromady. To prináša výhodu (text upravíte priamo vo svojom prehliadači), ale pri každej návšteve si to vyžaduje výpočtový výkon. Ak pochopíte tento proces, neskôr pochopíte aj to, prečo je stránka pomalá, prečo má cachovanie taký veľký vplyv a prečo môže aktualizácia PHP niečo pokaziť.
Cesta požiadavky na stránku
Predstavte si, že návštevník otvorí https://example.com/contact/. Stane sa toto:
- DNS: prehliadač vyhľadá IP adresu domény
example.com(pozrite si kurz o DNS). Následne nadviaže zabezpečené pripojenie na túto adresu. - Webový server: na serveri beží webový server, napríklad LiteSpeed, Apache alebo nginx. Ten prijme požiadavku. Ak existuje skutočný súbor alebo priečinok s daným názvom (obrázok, stylesheet), odošle ho priamo. Ak nie, platí pravidlo zo súboru
.htaccess(pri LiteSpeed a Apache) alebo z konfigurácie nginx: „odovzdaj všetko, čo neexistuje, súboruindex.php“. - PHP:
index.phpje súbor PHP. Webový server ho nechá vykonať pomocou PHP, programovacieho jazyka, v ktorom je WordPress napísaný. PHP najprv načítawp-config.php(nastavenia vrátane prihlasovacích údajov k databáze), potom zvyšok WordPressu, následne všetky aktívne pluginy a aktívnu tému. - Databáza: WordPress zistí, aký obsah patrí k adrese
/contact/, a kladie otázky databáze (MariaDB alebo MySQL): ktorá stránka má slugcontact, aké sú nastavenia stránky, ktoré menu k nej patrí? Takáto otázka sa nazýva query. Jednoduchá stránka si vyžiada aj niekoľko desiatok query, s pluginmi ich môžu byť stovky. - Téma: WordPress vyberie, ktorá šablóna témy stránku zobrazí. Riadi sa pritom hierarchiou šablón: pre stránku so slugom
contactWordPress najprv hľadá šablónupage-contact, potompage-<id>(číslo stránky), potompage, následnesingulara napokonindex. Vyhráva prvá šablóna, ktorá existuje. - HTML naspäť: výsledkom je HTML stránka, ktorú PHP odovzdá webovému serveru a ten ju pošle prehliadaču.
- Prehliadač načíta HTML a následne stiahne stylesheety, skripty, písma a obrázky. Tie sú obyčajné súbory, takže prichádzajú priamo z webového servera (alebo z cache).
Medzi krokom 2 a krokom 6 je čas, ktorý server potrebuje na vytvorenie stránky. Tento čas vidíte ako TTFB (time to first byte): čas medzi požiadavkou a prvým bajtom odpovede. Pri dobre nastavenej stránke je výrazne pod jednu sekundu. V module 6 si to zmeriate sami.
Prečo záleží na každom pluginu
V kroku 3 sa všetky aktívne pluginy načítajú pri každej požiadavke. Aj keď daný plugin na danej stránke nič nezobrazuje. Plugin na fotogalériu sa teda načíta aj vtedy, keď niekto otvorí vašu kontaktnú stránku. Každý plugin môže vykonať ďalšie query, načítať ďalší kód a pridať na stránku ďalšie skripty.
To vysvetľuje dve veci, s ktorými sa v tomto kurze stretnete častejšie:
- Menej pluginov je zvyčajne rýchlejšie. Nie preto, že by samotný počet niečo znamenal, ale preto, že každý plugin môže pri každej požiadavke vykonávať prácu.
- Jeden pokazený plugin môže zhodiť celú stránku. Ak sa v kroku 3 niečo pokazí (napríklad plugin, ktorý nefunguje s novou verziou PHP), PHP sa nikdy nedostane ku kroku 6. Návštevník uvidí prázdnu bielu stránku alebo hlásenie „Na tejto webovej stránke došlo ku kritickej chybe“ (lekcia 5.4).
Odkiaľ pochádzajú PHP a databáza
PHP a databáza bežia na serveri vášho hostingu. Verziu PHP si zvyčajne volíte sami v ovládacom paneli (v DirectAdmin sa táto funkcia volá Select PHP version, pozrite si lekciu 8.4). Databázu vytvoríte pri inštalácii; inštalátor to za vás často urobí automaticky (lekcia 2.2).
Niekoľko vecí, ktoré si treba zapamätať:
- Verzia PHP: každá nová verzia PHP je rýchlejšia a bezpečnejšia, ale starší kód sa na nej môže pokaziť. wordpress.org v súčasnosti odporúča PHP 8.3 alebo novšie (stav k novembru 2026).
- Databáza: wordpress.org odporúča MariaDB 10.11 alebo novšie, prípadne MySQL 8.0 alebo novšie. MariaDB je odnož MySQL; pre WordPress v tom nie je rozdiel.
- Databáza väčšinou beží na tom istom serveri (hodnota
DB_HOSTje vtedylocalhost). Pri väčšom hostingu môže bežať na samostatnom serveri.
Cache: skrátenie cesty
Ak si sto návštevníkov vyžiada tú istú kontaktnú stránku, WordPress bez cache vytvorí tú istú stránku stokrát. Zakaždým rovnaké query, rovnaká šablóna, rovnaké HTML. Cache stránok uloží HTML po prvom vytvorení. Ďalší návštevník dostane uloženú verziu: kroky 3 až 6 odpadnú.
Bez cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
S cache: browser > webserver > opgeslagen HTMLPreto cachovanie prináša najväčšie zrýchlenie (lekcia 6.2). Zároveň to vysvetľuje bežný zdroj zmätku: „upravil som text, ale vidím starú verziu.“ Vtedy sa vám zobrazuje uložená verzia; po vyprázdnení cache uvidíte novú.
Nie všetko môže pochádzať z cache. Prihlásený správca, nákupný košík alebo stránka s pokladňou vyzerá pre každého návštevníka inak. Dobrý cachovací plugin tieto prípady vynecháva.
Hlavičky: čo vám server prezradí
Každá odpoveď webového servera začína hlavičkami (headers), ešte pred samotným HTML. Na stránke ich nevidíte, ale nájdete ich v nástrojoch pre vývojárov vo vašom prehliadači (F12, karta Sieť, kliknite na prvú požiadavku). Prí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: hitserverhovorí, ktorý webový server odpovedá.linkswp-jsonprezrádza, že ide o WordPress.x-litespeed-cache: hitznamená, že táto stránka pochádza z LiteSpeed cache. Iné cache používajú iné názvy, napríkladx-cache: HITalebocf-cache-status: HITpri Cloudflare.
Tieto riadky si nemusíte pamätať naspamäť. Kto ich však vie čítať, dokáže veľa problémov vyriešiť sám.
Zhrnutie
- WordPress vytvára každú stránku v momente požiadavky: webový server, PHP, pluginy, databáza, téma, HTML.
- Pri každej požiadavke sa načítajú všetky aktívne pluginy; jeden pokazený plugin môže zastaviť celú stránku.
- Hierarchia šablón určuje, ktorá šablóna témy stránku zobrazí.
- Cache stránok preskočí výpočtovú prácu tým, že vráti uložené HTML. Prihlásení používatelia a nákupné košíky do tejto cache nepatria.
- Hlavičky odpovede prezrádzajú, ktorý webový server odpovedal a či stránka pochádzala z cache.
Kvíz
Úloha
Úloha A1.2: Prečítajte si hlavičky vašej stránky. Otvorte svoju vlastnú stránku (alebo wordpress.org) pomocou nástrojov pre vývojárov vo vašom prehliadači (F12, karta Sieť, obnovte stránku, kliknite na prvú požiadavku). Zapíšte, aký webový server je uvedený v hlavičke server (alebo „žiadny“, ak tam nie je) a či existuje hlavička, ktorá hovorí, že stránka pochádzala z cache (aký má názov a akú hodnotu). Program si vyžiada tú istú stránku a porovná výsledky.
Ďalšie čítanie
Tieto články opisujú jednotlivé kroky v paneloch WebOké; v iných paneloch fungujú podobne.
- Návod na DirectAdmin 1.9: Vysvetlenie pojmov: doména, subdoména, presmerovanie, DNS, e-mailová schránka a databáza
- Návod na DirectAdmin 14.1: Voľba verzie PHP (Select PHP version)
- Bezplatný kurz DNS 1.4: Cesta jedného DNS dotazu
- Hierarchia šablón (developer.wordpress.org, Angličtina): https://developer.wordpress.org/themes/basics/template-hierarchy/
