Modul 1 · 1.2
Pod pokrovom: spletni strežnik, PHP in podatkovna zbirka
Modul 1: Kako deluje WordPress · Čas branja: 8 minut
Učni cilj: Po tej lekciji boste znali korak za korakom razložiti, kako zahteva za stran pri WordPressu postane HTML stran, in kje v tej poti predpomnilnik (cache) skrajša postopek.
Ključni pojmi: spletni strežnik (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, poizvedba (query), index.php, hierarhija predlog (template-hiërarchie), dinamično proti statično, TTFB
Statična in dinamična stran
Pri statičnem spletnem mestu je vsaka stran shranjena kot dokončana datoteka na strežniku. Spletni strežnik vzame datoteko in jo pošlje naprej. To je hitro in preprosto, vendar vsaka sprememba pomeni novo datoteko.
WordPress je dinamičen: stran nastane šele v trenutku, ko jo nekdo zahteva. Ne obstaja datoteka contact.html. Obstaja kos besedila v podatkovni zbirki, tema s predlogami in sklop PHP kode, ki to dvoje združi. To prinaša udobje (besedilo lahko prilagodite kar v brskalniku), vendar ob vsakem obisku zahteva računanje. Če razumete to računanje, boste kasneje razumeli tudi, zakaj je spletno mesto počasno, zakaj predpomnjenje (caching) tako veliko spremeni in zakaj lahko nadgradnja PHP nekaj pokvari.
Potovanje zahteve za stran
Recimo, da obiskovalec odpre https://example.com/contact/. Zgodi se naslednje:
- DNS: brskalnik poišče IP naslov za
example.com(glejte tečaj o DNS). Vzpostavi varno povezavo s tem naslovom. - Spletni strežnik: na strežniku teče spletni strežnik, na primer LiteSpeed, Apache ali nginx. Ta prejme zahtevo. Če obstaja prava datoteka ali mapa s tem imenom (slika, stylesheet), jo pošlje neposredno naprej. Če ne, velja pravilo iz
.htaccess(pri LiteSpeed in Apache) ali iz konfiguracije nginx: "vse, kar ne obstaja, posreduj datotekiindex.php". - PHP:
index.phpje datoteka PHP. Spletni strežnik jo da izvesti PHP, programskemu jeziku, v katerem je napisan WordPress. PHP najprej naložiwp-config.php(nastavitve, s podatki za podatkovno zbirko), nato preostanek WordPressa, nato vse aktivne vtičnike in aktivno temo. - Podatkovna zbirka: WordPress preveri, katera vsebina spada k
/contact/, in postavi vprašanja podatkovni zbirki (MariaDB ali MySQL): katera stran ima slugcontact, katere so nastavitve spletnega mesta, kateri meni spada zraven? Takemu vprašanju pravimo poizvedba (query). Že preprosta stran hitro zahteva deset ali več poizvedb; z vtičniki jih je lahko na stotine. - Tema: WordPress izbere, katera predloga teme oblikuje stran. To poteka po hierarhiji predlog (template-hiërarchie): za stran s slugom
contactWordPress najprej išče predlogopage-contact, natopage-<id>(številko strani), natopage, natosingularin nazadnjeindex. Zmaga prva, ki obstaja. - HTML nazaj: rezultat je HTML stran, ki jo PHP preda spletnemu strežniku, ta pa brskalniku.
- Brskalnik prebere HTML in nato pridobi še stylesheete, skripte, pisave in slike. To so navadne datoteke, zato pridejo neposredno od spletnega strežnika (ali iz predpomnilnika).
Med korakom 2 in korakom 6 je čas, ki ga strežnik potrebuje za izdelavo strani. To se odraža v TTFB (time to first byte): času med zahtevo in prvim bajtom odgovora. Pri dobro urejenem spletnem mestu je ta čas precej pod sekundo. V modulu 6 ga boste izmerili sami.
Zakaj šteje vsak vtičnik
V koraku 3 se naložijo vsi aktivni vtičniki, pri vsaki zahtevi. Tudi če ta vtičnik na tej strani ne počne nič. Vtičnik za fotogalerijo se torej naloži tudi, ko nekdo odpre Vašo kontaktno stran. Vsak vtičnik lahko izvede dodatne poizvedbe, naloži dodatno kodo in strani doda dodatne skripte.
To pojasni dve stvari, na kateri boste v tem tečaju še naleteli:
- Manj vtičnikov je ponavadi hitreje. Ne zato, ker bi bilo samo število pomembno, temveč zato, ker lahko vsak vtičnik pri vsaki zahtevi opravi delo.
- En pokvarjen vtičnik lahko ustavi celotno spletno mesto. Če v koraku 3 nekaj spodleti (na primer vtičnik, ki ne deluje z novo različico PHP), PHP nikoli ne pride do koraka 6. Obiskovalec dobi prazno stran ali sporočilo "Na tem spletnem mestu je prišlo do kritične napake" (lekcija 5.4).
Od kod prihajata PHP in podatkovna zbirka
PHP in podatkovna zbirka tečeta na strežniku Vašega ponudnika gostovanja. Različico PHP po navadi izberete sami v nadzorni plošči (pri DirectAdmin se to imenuje Select PHP version, glejte lekcijo 8.4). Podatkovno zbirko ustvarite ob namestitvi; namestitveni čarovnik to pogosto naredi namesto Vas (lekcija 2.2).
Nekaj stvari, ki si jih velja zapomniti:
- Različica PHP: vsaka nova različica PHP je hitrejša in varnejša, vendar lahko starejša koda na njej odpove. wordpress.org trenutno priporoča PHP 8.3 ali novejši (stanje november 2026).
- Podatkovna zbirka: wordpress.org priporoča MariaDB 10.11 ali novejšo, ali MySQL 8.0 ali novejšo. MariaDB je odcep MySQL; za WordPress to ne predstavlja razlike.
- Podatkovna zbirka je po navadi na istem strežniku (
DB_HOSTje takratlocalhost). Pri večjih gostovanjih je lahko na ločenem strežniku.
Predpomnilnik: skrajšanje poti
Če sto obiskovalcev zahteva isto kontaktno stran, jo WordPress brez predpomnilnika izdela stotič znova. Vsakič iste poizvedbe, ista predloga, isti HTML. Predpomnilnik strani (paginacache) shrani HTML po prvem obisku. Naslednji obiskovalec dobi shranjeno različico: koraki 3 do 6 odpadejo.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLZato predpomnjenje prinese največjo pridobitev hitrosti (lekcija 6.2). To pojasni tudi pogosto zmedo: "besedilo sem spremenil, a vidim staro različico." Takrat vidite shranjeno različico; po praznjenju predpomnilnika boste videli novo.
Ne sme vse priti iz predpomnilnika. Prijavljen skrbnik, nakupovalna košarica ali stran za plačilo je za vsakega obiskovalca drugačna. Dober vtičnik za predpomnjenje te strani izloči.
Glave: kaj Vam strežnik pove
Vsak odgovor spletnega strežnika se začne z glavami (headers), pred HTML vsebino. Teh ne vidite na strani, vidite pa jih v razvijalskih orodjih brskalnika (F12, zavihek Omrežje, kliknite na prvo zahtevo). Primer:
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: hitserverpove, kateri spletni strežnik odgovarja.linkzwp-jsonizda, da gre za WordPress.x-litespeed-cache: hitpomeni, da je ta stran prišla iz predpomnilnika LiteSpeed. Drugi predpomnilniki uporabljajo druga imena, na primerx-cache: HITalicf-cache-status: HITpri Cloudflare.
Teh vrstic Vam ni treba znati na pamet. Kdor pa jih zna brati, lahko sam odkrije marsikatero težavo.
Povzetek
- WordPress izdela vsako stran v trenutku zahteve: spletni strežnik, PHP, vtičniki, podatkovna zbirka, tema, HTML.
- Pri vsaki zahtevi se naložijo vsi aktivni vtičniki; en pokvarjen vtičnik lahko ustavi celotno spletno mesto.
- Hierarhija predlog določa, katera predloga teme oblikuje stran.
- Predpomnilnik strani izpusti računanje tako, da poda shranjen HTML. Prijavljeni uporabniki in nakupovalne košarice ne sodijo v ta predpomnilnik.
- Glave odgovora povedo, kateri spletni strežnik odgovarja in ali je stran prišla iz predpomnilnika.
Kviz
Naloga
Naloga A1.2: Preberite glave Vašega spletnega mesta. Odprite svoje spletno mesto (ali wordpress.org) z razvijalskimi orodji brskalnika (F12, zavihek Omrežje, osvežite stran, kliknite na prvo zahtevo). Vpišite, kateri spletni strežnik je naveden v glavi server (ali "noben", če je ni), in ali obstaja glava, ki pove, da je stran prišla iz predpomnilnika (katero ime in katero vrednost). Program zahteva isto stran in primerja.
Dodatno branje
Ti članki opisujejo korake v nadzornih ploščah WebOké; v drugih nadzornih ploščah delujejo podobno.
- Priročnik DirectAdmin 1.9: Pojmi razloženi: domena, poddomena, pointer, DNS, poštni predal in zbirka podatkov
- Priročnik DirectAdmin 14.1: Izbira različice PHP (Select PHP version)
- Brezplačen DNS tečaj 1.4: Potovanje DNS poizvedbe
- Hierarhija predlog (developer.wordpress.org, angleško): https://developer.wordpress.org/themes/basics/template-hierarchy/
