Moodul 1 · 1.2
Mootorikatte all: veebiserver, PHP ja andmebaas
Moodul 1: Kuidas WordPress töötab · Lugemisaeg: 8 minutit
Õpieesmärk: Pärast seda õppetundi oskad samm-sammult selgitada, kuidas lehepäring WordPressis saab HTML-leheks, ja kus vahemälu (cache) selle teekonna lühemaks teeb.
Põhimõisted: veebiserver (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, päring (query), index.php, mallihierarhia, dünaamiline vs staatiline, TTFB
Staatiline ja dünaamiline leht
Staatilise veebisaidi puhul on iga leht serveris valmis failina olemas. Veebiserver võtab faili ja saadab selle laiali. See on kiire ja lihtne, kuid iga muudatus tähendab uut faili.
WordPress on dünaamiline: leht tekib alles siis, kui keegi seda küsib. Faili contact.html ei ole olemas. Olemas on tekstitükk andmebaasis, mallidega teema ja hulk PHP-koodi, mis need kaks kokku paneb. See annab mugavust (muudad teksti oma brauseris), kuid nõuab iga külastuse puhul arvutustööd. Kui mõistad seda arvutustööd, mõistad hiljem ka seda, miks sait on aeglane, miks vahemälu (cache) nii palju muudab ja miks PHP uuendus võib midagi katki teha.
Lehepäringu teekond
Oletame, et külastaja avab https://example.com/contact/. Siis juhtub järgmine:
- DNS: brauser otsib üles domeeni
example.comIP-aadressi (vaata DNS-kursust). Ta loob selle aadressiga turvalise ühenduse. - Veebiserver: serveris töötab veebiserver, näiteks LiteSpeed, Apache või nginx. See võtab päringu vastu. Kui selle nimega fail või kaust päriselt eksisteerib (pilt, stiilileht), saadab veebiserver selle otse laiali. Kui mitte, kehtib reegel failist
.htaccess(LiteSpeedi ja Apache puhul) või nginxi seadistusest: "anna kõik, mida ei ole olemas, failileindex.php". - PHP:
index.phpon PHP-fail. Veebiserver laseb selle käivitada PHP-l, programmeerimiskeelel, milles WordPress on kirjutatud. PHP laadib kõigepealt failiwp-config.php(seaded koos andmebaasiandmetega), seejärel ülejäänud WordPressi, siis kõik aktiivsed pluginad ja aktiivse teema. - Andmebaas: WordPress uurib, milline sisu kuulub aadressi
/contact/alla, ja esitab andmebaasile (MariaDB või MySQL) küsimusi: millisel lehel on slugcontact, millised on saidi seaded, milline menüü sellega kaasneb? Sellist küsimust nimetatakse päringuks (query). Juba lihtsa lehe tegemine võtab kümneid päringuid; pluginatega võib neid tulla sadu. - Teema: WordPress valib, milline teema mall lehe vormindab. See käib mallihierarhia järgi: lehe jaoks, mille slug on
contact, otsib WordPress kõigepealt mallipage-contact, siispage-<id>(lehe number), siispage, siissingularja lõpuksindex. Esimene, mis olemas on, võidab. - HTML tagasi: tulemuseks on HTML-leht, mille PHP annab veebiserverile ja veebiserver omakorda brauserile.
- Brauser loeb HTML-i ja toob seejärel veel stiililehed, skriptid, kirjatüübid ja pildid. Need on tavalised failid, nii et need tulevad otse veebiserverist (või vahemälust).
Sammu 2 ja sammu 6 vahel kulub serveril aega lehe tegemiseks. Seda näed väärtusena TTFB (time to first byte): aeg päringu ja vastuse esimese baidi vahel. Hästi seadistatud saidil jääb see hõlpsasti alla ühe sekundi. Moodulis 6 mõõdad seda ise.
Miks iga plugin loeb
Sammu 3 juures laaditakse kõik aktiivsed pluginad, iga päringu puhul. Isegi siis, kui see plugin sellel lehel midagi ei tee. Fotogalerii plugin laaditakse seega ka siis, kui keegi avab sinu kontaktilehe. Iga plugin võib teha lisapäringuid, laadida lisakoodi ja lisada lehele lisaskripte.
See selgitab kahte asja, millega selles kursuses veel korduvalt kokku puutud:
- Vähem pluginaid on tavaliselt kiirem. Mitte sellepärast, et arv ise loeb, vaid sellepärast, et iga plugin võib iga päringu puhul tööd teha.
- Üks katkine plugin võib kogu saidi seisma panna. Kui sammus 3 läheb midagi valesti (näiteks plugin, mis ei tööta uue PHP versiooniga), siis PHP ei jõua kunagi sammuni 6. Külastaja saab valge lehe või teate "Sellel veebisaidil on tõsine viga" (õppetund 5.4).
Kust tulevad PHP ja andmebaas
PHP ja andmebaas töötavad sinu majutaja serveris. PHP versiooni valid tavaliselt ise juhtpaneelilt (DirectAdmini puhul kannab see nime Select PHP version, vaata õppetundi 8.4). Andmebaasi loote paigaldamise käigus; paigaldaja teeb seda sageli sinu eest (õppetund 2.2).
Mõned asjad, mida meeles pidada:
- PHP versioon: iga uus PHP versioon on kiirem ja turvalisem, kuid vana kood võib selle peal katki minna. wordpress.org soovitab praegu PHP 8.3 või uuemat (seis november 2026).
- Andmebaas: wordpress.org soovitab MariaDB 10.11 või uuemat, või MySQL 8.0 või uuemat. MariaDB on MySQL-i haru; WordPressi jaoks pole sellel vahet.
- Andmebaas asub tavaliselt samas serveris (
DB_HOSTon siislocalhost). Suurema majutuse puhul võib see asuda eraldi serveris.
Vahemälu (cache): teekonna lühendamine
Kui sada külastajat küsib sama kontaktilehte, teeb WordPress ilma vahemäluta selle sada korda uuesti. Iga kord samad päringud, sama mall, sama HTML. Lehe vahemälu (page cache) salvestab HTML-i pärast esimest korda. Järgmine külastaja saab salvestatud versiooni: sammud 3 kuni 6 jäävad ära.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLJust sellepärast annab vahemälu (cache) kõige suurema kiiruse võidu (õppetund 6.2). See selgitab ka sagedast segadust: "ma muutsin teksti, aga näen vana versiooni." Siis saad salvestatud versiooni; pärast vahemälu tühjendamist näed uut.
Mitte kõik ei tohi vahemälust tulla. Sisseloginud administraator, ostukorv või tasumise leht on iga külastaja jaoks erinev. Hea vahemälu plugin jätab need vahele.
Päised (HTTP-päised): mida server sulle räägib
Iga veebiserveri vastus algab päistega (headers), enne HTML-i. Neid ei näe lehel, küll aga oma brauseri arendustööriistades (F12, vahekaart Võrk, klõpsa esimesel päringul). Näide:
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ütleb, milline veebiserver vastab.linkkooswp-json-ga reedab, et tegu on WordPressiga.x-litespeed-cache: hittähendab, et see leht tuli LiteSpeedi vahemälust. Teised vahemälud kasutavad teisi nimesid, näiteksx-cache: HITvõicf-cache-status: HITCloudflare puhul.
Sul ei ole vaja neid ridu pähe õppida. Kuid kes neid lugeda oskab, leiab paljud probleemid ise üles.
Kokkuvõte
- WordPress koostab iga lehe päringu hetkel: veebiserver, PHP, pluginad, andmebaas, teema, HTML.
- Iga päringu puhul laaditakse kõik aktiivsed pluginad; üks katkine plugin võib kogu saidi seisma panna.
- Mallihierarhia määrab, milline teema mall lehe vormindab.
- Lehe vahemälu jätab arvutustöö vahele, andes salvestatud HTML-i. Sisseloginud kasutajad ja ostukorvid ei kuulu sellesse vahemällu.
- Vastuse päised ütlevad, milline veebiserver vastab ja kas leht tuli vahemälust.
Test (quiz)
Ülesanne
Ülesanne A1.2: Loe oma saidi päiseid. Ava oma sait (või wordpress.org) oma brauseri arendustööriistadega (F12, vahekaart Võrk, värskenda lehte, klõpsa esimesel päringul). Kirjuta üles, milline veebiserver on kirjas päises server (või "puudub", kui seda ei ole) ja kas on päis, mis näitab, et leht tuli vahemälust (milline nimi ja milline väärtus). Programm küsib sama lehe üle ja võrdleb.
Lisalugemist
Need artiklid kirjeldavad samme WebOké paneelides; teistes paneelides toimivad need sarnaselt.
- DirectAdmin juhend 1.9: Mõisted selgitatud: domeen, subdomeen, pointer, DNS, mailbox ja database
- DirectAdmin juhend 14.1: PHP-versiooni valimine (Select PHP version)
- Tasuta DNS-kursus 1.4: DNS-päringu teekond
- Mallihierarhia (developer.wordpress.org, inglise keeles): https://developer.wordpress.org/themes/basics/template-hierarchy/
