Modul 1 · 1.2
Ispod haube: web poslužitelj, PHP i baza podataka
Modul 1: Kako WordPress funkcionira · Vrijeme čitanja: 8 minuta
Cilj učenja: Nakon ove lekcije moći ćete korak po korak objasniti kako zahtjev za stranicom u WordPressu postaje HTML stranica i gdje predmemorija (cache) skraćuje taj put.
Ključni pojmovi: web poslužitelj (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, upit (query), index.php, hijerarhija predložaka, dinamičko naspram statičkog, TTFB
Statička i dinamička stranica
Kod statičke web-stranice svaka stranica postoji kao gotova datoteka na poslužitelju. Web poslužitelj dohvati datoteku i pošalje je. To je brzo i jednostavno, ali svaka izmjena znači novu datoteku.
WordPress je dinamičan: stranica nastaje tek u trenutku kad je netko zatraži. Ne postoji datoteka contact.html. Postoji dio teksta u bazi podataka, tema s predlošcima i skup PHP koda koji to dvoje spaja. To donosi praktičnost (tekst prilagođavate u pregledniku), ali svaki posjet zahtijeva računanje. Razumijete li to računanje, kasnije ćete razumjeti i zašto je web-stranica spora, zašto predmemorija (caching) toliko pomaže i zašto PHP nadogradnja ponekad nešto može pokvariti.
Put zahtjeva za stranicom
Recimo da posjetitelj otvori https://example.com/contact/. Tada se događa sljedeće:
- DNS: preglednik traži IP adresu za
example.com(pogledajte tečaj o DNS-u). Zatim uspostavlja sigurnu vezu s tom adresom. - Web poslužitelj: na poslužitelju radi web poslužitelj, primjerice LiteSpeed, Apache ili nginx. On prima zahtjev. Ako postoji stvarna datoteka ili mapa s tim nazivom (slika, stylesheet), poslužitelj je odmah šalje. Ako ne postoji, vrijedi pravilo iz
.htaccess(kod LiteSpeeda i Apachea) ili iz konfiguracije nginxa: "sve što ne postoji proslijedi datoteciindex.php". - PHP:
index.phpje PHP datoteka. Web poslužitelj prepušta njezino izvršavanje PHP-u, programskom jeziku u kojem je WordPress napisan. PHP prvo učitavawp-config.php(postavke, uključujući podatke o bazi podataka), zatim ostatak WordPressa, zatim sve aktivne dodatke (plugin) i aktivnu temu. - Baza podataka: WordPress provjerava koji sadržaj pripada adresi
/contact/i postavlja pitanja bazi podataka (MariaDB ili MySQL): koja stranica ima slugcontact, koje su postavke web-stranice, koji joj izbornik pripada? Takvo pitanje naziva se upit (query). Već jednostavna stranica brzo zahtijeva desetke upita; s dodacima ih može biti i stotine. - Tema: WordPress odabire koji predložak teme oblikuje stranicu. To se događa prema hijerarhiji predložaka: za stranicu sa slugom
contactWordPress prvo traži predložakpage-contact, zatimpage-<id>(broj stranice), zatimpage, zatimsingulari na krajuindex. Pobjeđuje prvi koji postoji. - HTML natrag: rezultat je HTML stranica koju PHP predaje web poslužitelju, a web poslužitelj pregledniku.
- Preglednik čita HTML i zatim dohvaća i stylesheetove, skripte, fontove i slike. To su obične datoteke, pa one dolaze izravno s web poslužitelja (ili iz predmemorije).
Između koraka 2 i koraka 6 nalazi se vrijeme koje je poslužitelju potrebno da izradi stranicu. To se mjeri kao TTFB (time to first byte): vrijeme između zahtjeva i prvog bajta odgovora. Kod dobro postavljene web-stranice to je znatno ispod jedne sekunde. U modulu 6 to ćete izmjeriti sami.
Zašto je svaki dodatak bitan
U koraku 3 učitavaju se svi aktivni dodaci, kod svakog zahtjeva. Čak i ako taj dodatak na toj stranici ništa ne čini. Dodatak za foto-galeriju tako se učitava i kad netko otvori Vašu kontakt stranicu. Svaki dodatak može izvršiti dodatne upite, učitati dodatni kod i dodati skripte na stranicu.
Time se objašnjavaju dvije stvari koje ćete u ovom tečaju često susretati:
- Manje dodataka obično je brže. Ne zato što je sam broj presudan, nego zato što svaki dodatak kod svakog zahtjeva može obavljati posao.
- Jedan neispravan dodatak može srušiti cijelu web-stranicu. Ako u koraku 3 nešto pođe po zlu (primjerice dodatak koji ne radi s novom inačicom PHP-a), PHP nikad ne dođe do koraka 6. Posjetitelj dobiva praznu bijelu stranicu ili poruku "Došlo je do kritične pogreške na ovoj web-stranici" (lekcija 5.4).
Odakle dolaze PHP i baza podataka
PHP i baza podataka rade na poslužitelju Vašeg hostera. Inačicu PHP-a obično sami birate u kontrolnoj ploči (kod DirectAdmina to se zove Select PHP version, pogledajte lekciju 8.4). Bazu podataka izrađujete prilikom instalacije; instalacijski program to često učini umjesto Vas (lekcija 2.2).
Nekoliko stvari koje vrijedi zapamtiti:
- Inačica PHP-a: svaka nova inačica PHP-a brža je i sigurnija, ali stariji kod može na njoj zapeti. wordpress.org trenutno preporučuje PHP 8.3 ili noviji (stanje studeni 2026).
- Baza podataka: wordpress.org preporučuje MariaDB 10.11 ili noviji, ili MySQL 8.0 ili noviji. MariaDB je ogranak MySQL-a; za WordPress nema razlike.
- Baza podataka obično se nalazi na istom poslužitelju (
DB_HOSTje tadalocalhost). Kod većih hosting paketa može se nalaziti na zasebnom poslužitelju.
Predmemorija: skraćivanje puta
Ako sto posjetitelja zatraži istu kontakt stranicu, WordPress bi je bez predmemorije izradio sto puta iznova. Svaki put isti upiti, isti predložak, isti HTML. Predmemorija stranica (page cache) sprema HTML nakon prvog puta. Sljedeći posjetitelj dobiva spremljenu verziju: koraci 3 do 6 otpadaju.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLZato predmemorija donosi najveći dobitak u brzini (lekcija 6.2). Time se objašnjava i česta zabuna: "promijenio sam tekst, ali vidim staru verziju." Tada dobivate spremljenu verziju; nakon pražnjenja predmemorije vidite novu.
Ne smije sve dolaziti iz predmemorije. Prijavljeni administrator, košarica za kupovinu ili stranica za plaćanje za svakog su posjetitelja drukčiji. Dobar dodatak za predmemoriju te stranice preskače.
Zaglavlja: što Vam poslužitelj govori
Svaki odgovor web poslužitelja počinje zaglavljima (headers), prije HTML-a. Njih ne vidite na stranici, ali vidite ih u razvojnim alatima Vašeg preglednika (F12, kartica Mreža, osvježite stranicu, kliknite na prvi zahtjev). Primjer:
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: hitservergovori koji web poslužitelj odgovara.linkswp-jsonotkriva da se radi o WordPressu.x-litespeed-cache: hitznači da je ova stranica došla iz LiteSpeed predmemorije. Druge predmemorije koriste druge nazive, poputx-cache: HITilicf-cache-status: HITkod Cloudflarea.
Ne morate ova zaglavlja znati napamet. No tko ih zna čitati, može sam pronaći mnoge probleme.
Sažetak
- WordPress izrađuje svaku stranicu u trenutku zahtjeva: web poslužitelj, PHP, dodaci, baza podataka, tema, HTML.
- Kod svakog zahtjeva učitavaju se svi aktivni dodaci; jedan neispravan dodatak može zaustaviti cijelu web-stranicu.
- Hijerarhija predložaka određuje koji predložak teme oblikuje stranicu.
- Predmemorija stranica preskače računanje tako što vraća spremljeni HTML. Prijavljeni korisnici i košarice za kupovinu ne pripadaju u tu predmemoriju.
- Zaglavlja odgovora govore koji web poslužitelj odgovara i je li stranica došla iz predmemorije.
Kviz
Zadatak
Zadatak A1.2: Pročitajte zaglavlja Vaše web-stranice. Otvorite svoju web-stranicu (ili wordpress.org) pomoću razvojnih alata Vašeg preglednika (F12, kartica Mreža, osvježite stranicu, kliknite na prvi zahtjev). Upišite koji web poslužitelj stoji u zaglavlju server (ili "nijedan" ako ga nema) te postoji li zaglavlje koje govori da je stranica došla iz predmemorije (koji naziv i koja vrijednost). Program zatim dohvaća istu stranicu i uspoređuje rezultat.
Dodatno čitanje
Ovi članci opisuju korake u kontrolnim pločama WebOké-a; u drugim kontrolnim pločama rade na sličan način.
- DirectAdmin priručnik 1.9: Pojmovi objašnjeni: domain, subdomain, pointer, DNS, mailbox i database
- DirectAdmin priručnik 14.1: Odabir PHP verzije (Select PHP version)
- Besplatni DNS tečaj 1.4: Put jednog DNS upita
- Hijerarhija predložaka (developer.wordpress.org, engleski): https://developer.wordpress.org/themes/basics/template-hierarchy/
