1 modulis · 1.2
Po gaubtu: serveris, PHP ir duomenų bazė
1 modulis: Kaip veikia WordPress · Skaitymo trukmė: 8 min.
Mokymosi tikslas: Po šios pamokos galėsite žingsnis po žingsnio paaiškinti, kaip puslapio užklausa WordPress sistemoje virsta HTML puslapiu ir kur talpykla (cache) šį kelią sutrumpina.
Pagrindinės sąvokos: serveris (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, užklausa (query), index.php, šablonų hierarchija, dinaminis ir statinis turinys, TTFB
Statinis ir dinaminis puslapis
Esant statinei svetainei, kiekvienas puslapis serveryje saugomas kaip paruoštas failas. Serveris tiesiog paima failą ir jį išsiunčia. Tai greita ir paprasta, tačiau kiekvienas pakeitimas reiškia naują failą.
WordPress yra dinamiškas: puslapis susikuria tik tada, kai kas nors jo paprašo. Nėra failo contact.html. Yra teksto fragmentas duomenų bazėje, tema su šablonais ir krūva PHP kodo, kuris šiuos du dalykus sujungia. Tai suteikia patogumo (tekstą galite keisti tiesiai naršyklėje), bet kiekvienas apsilankymas reikalauja skaičiavimų. Suprasdami šį procesą, vėliau suprasite ir tai, kodėl svetainė veikia lėtai, kodėl talpykla (caching) turi tokią didelę reikšmę ir kodėl PHP atnaujinimas gali ką nors sugadinti.
Puslapio užklausos kelionė
Tarkime, lankytojas atidaro https://example.com/contact/. Vyksta štai kas:
- DNS: naršyklė ieško
example.comIP adreso (žr. DNS kursą). Ji užmezga saugų ryšį su tuo adresu. - Serveris: serveryje veikia žiniatinklio serveris, pavyzdžiui, LiteSpeed, Apache arba nginx. Jis gauna užklausą. Jei egzistuoja tikras failas ar aplankas tokiu pavadinimu (nuotrauka, stilių failas), jis išsiunčiamas tiesiogiai. Jei ne, galioja taisyklė iš
.htaccess(LiteSpeed ir Apache atveju) arba iš nginx konfigūracijos: „viską, kas neegzistuoja, nukreipti įindex.php“. - PHP:
index.phpyra PHP failas. Serveris paveda jį vykdyti PHP programavimo kalbai, kuria parašytas WordPress. PHP pirmiausia įkeliawp-config.php(nustatymus, įskaitant duomenų bazės duomenis), tada likusią WordPress dalį, tada visus aktyvius įskiepius ir aktyvią temą. - Duomenų bazė: WordPress nustato, koks turinys priklauso adresui
/contact/, ir užduoda klausimus duomenų bazei (MariaDB arba MySQL): kuris puslapis turi slugcontact, kokie yra svetainės nustatymai, koks meniu jam priklauso? Toks klausimas vadinamas užklausa (query). Paprastam puslapiui greitai prireikia kelių dešimčių užklausų; su įskiepiais jų gali būti šimtai. - Tema: WordPress nusprendžia, kuris temos šablonas suformatuos puslapį. Tai vyksta pagal šablonų hierarchiją: puslapiui su slug
contactWordPress pirmiausia ieško šablonopage-contact, tadapage-<id>(puslapio numeris), tadapage, tadasingularir galiausiaiindex. Laimi pirmas rastas egzistuojantis šablonas. - HTML grąžinimas: rezultatas yra HTML puslapis, kurį PHP perduoda serveriui, o serveris, naršyklei.
- Naršyklė perskaito HTML ir po to dar atsisiunčia stilių failus, scenarijus, šriftus ir vaizdus. Tai paprasti failai, todėl jie gaunami tiesiogiai iš serverio (arba iš talpyklos).
Tarp 2 ir 6 žingsnio praeina laikas, kurio serveriui reikia puslapiui sukurti. Tai matote kaip TTFB (time to first byte, laikas iki pirmojo baito): laikas tarp užklausos ir pirmojo atsakymo baito. Gerai sutvarkytoje svetainėje šis laikas yra gerokai mažesnis nei sekundė. 6 modulyje tai išmatuosite patys.
Kodėl kiekvienas įskiepis turi reikšmę
3 žingsnyje įkeliami visi aktyvūs įskiepiai, kiekvienos užklausos metu. Net jei tas įskiepis konkrečiame puslapyje nieko nedaro. Nuotraukų galerijos įskiepis taigi bus įkeltas ir tada, kai kas nors atidaro Jūsų kontaktų puslapį. Kiekvienas įskiepis gali atlikti papildomas užklausas, įkelti papildomą kodą ir pridėti papildomus scenarijus prie puslapio.
Tai paaiškina du dalykus, su kuriais dažnai susidursite šiame kurse:
- Mažiau įskiepių dažniausiai reiškia didesnį greitį. Ne todėl, kad svarbu pats skaičius, o todėl, kad kiekvienas įskiepis gali atlikti darbą kiekvienos užklausos metu.
- Vienas sugedęs įskiepis gali sustabdyti visą svetainę. Jei 3 žingsnyje kažkas nutinka ne taip (pavyzdžiui, įskiepis nesuderinamas su nauja PHP versija), PHP niekada nepasiekia 6 žingsnio. Lankytojas gauna tuščią puslapį arba pranešimą „Šioje svetainėje įvyko kritinė klaida“ (5.4 pamoka).
Iš kur atsiranda PHP ir duomenų bazė
PHP ir duomenų bazė veikia Jūsų talpinimo paslaugų teikėjo serveryje. PHP versiją dažniausiai pasirenkate patys valdymo skydelyje (DirectAdmin ji vadinasi Select PHP version, žr. 8.4 pamoką). Duomenų bazė sukuriama diegimo metu; diegimo programa tai dažnai padaro už Jus (2.2 pamoka).
Keletas dalykų, kuriuos verta prisiminti:
- PHP versija: kiekviena nauja PHP versija yra greitesnė ir saugesnė, tačiau senas kodas gali su ja nesuveikti. Šiuo metu wordpress.org rekomenduoja PHP 8.3 arba naujesnę versiją (duomenys 2026 m. lapkričio mėn.).
- Duomenų bazė: wordpress.org rekomenduoja MariaDB 10.11 arba naujesnę versiją, arba MySQL 8.0 arba naujesnę versiją. MariaDB yra MySQL atšaka; WordPress atveju tai neturi reikšmės.
- Duomenų bazė dažniausiai yra tame pačiame serveryje (tada
DB_HOSTreikšmė yralocalhost). Esant didesniam talpinimui, ji gali būti atskirame serveryje.
Talpykla (cache): kelio sutrumpinimas
Jei šimtas lankytojų atidaro tą patį kontaktų puslapį, WordPress be talpyklos jį sukurs iš naujo šimtą kartų. Kiekvieną kartą tos pačios užklausos, tas pats šablonas, tas pats HTML. Puslapių talpykla (paginacache) išsaugo HTML po pirmo karto. Kitas lankytojas gauna išsaugotą versiją: 3-6 žingsniai praleidžiami.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLŠtai kodėl talpykla suteikia didžiausią greičio naudą (6.2 pamoka). Tai taip pat paaiškina dažnai pasitaikančią painiavą: „pakeičiau tekstą, bet matau seną versiją“. Tokiu atveju gaunate išsaugotą versiją; išvalius talpyklą, matysite naują.
Ne viskas gali būti pateikiama iš talpyklos. Prisijungęs administratorius, pirkinių krepšelis ar apmokėjimo puslapis kiekvienam lankytojui yra skirtingas. Geras talpyklos įskiepis tokius atvejus praleidžia.
Antraštės (headers): ką serveris Jums pasako
Kiekvienas serverio atsakymas prasideda antraštėmis (headers) prieš HTML. Jų nematote puslapyje, tačiau jas matote savo naršyklės kūrėjo įrankiuose (F12, skirtukas Tinklas, atnaujinkite puslapį, spustelėkite pirmąją užklausą). Pavyzdys:
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: hitserverparodo, kuris serveris atsako.linksuwp-jsonatskleidžia, kad tai WordPress.x-litespeed-cache: hitreiškia, kad šis puslapis buvo gautas iš LiteSpeed talpyklos. Kitos talpyklos naudoja kitus pavadinimus, pavyzdžiui,x-cache: HITarbacf-cache-status: HITCloudflare atveju.
Šių eilučių mintinai žinoti nereikia. Tačiau mokėdami jas skaityti, daugelį problemų galėsite rasti patys.
Santrauka
- WordPress sukuria kiekvieną puslapį užklausos metu: serveris, PHP, įskiepiai, duomenų bazė, tema, HTML.
- Kiekvienos užklausos metu įkeliami visi aktyvūs įskiepiai; vienas sugedęs įskiepis gali sustabdyti visą svetainę.
- Šablonų hierarchija nulemia, kuris temos šablonas suformatuoja puslapį.
- Puslapių talpykla praleidžia skaičiavimus, pateikdama išsaugotą HTML. Prisijungę naudotojai ir pirkinių krepšeliai tokioje talpykloje neturėtų būti.
- Atsakymo antraštės atskleidžia, kuris serveris atsako ir ar puslapis buvo gautas iš talpyklos.
Testas
Užduotis
Užduotis A1.2: Perskaitykite savo svetainės antraštes. Atidarykite savo svetainę (arba wordpress.org) naudodami naršyklės kūrėjo įrankius (F12, skirtukas Tinklas, atnaujinkite puslapį, spustelėkite pirmąją užklausą). Įrašykite, koks serveris nurodytas antraštėje server (arba „nėra“, jei tokios nėra) ir ar yra antraštė, rodanti, kad puslapis gautas iš talpyklos (kokiu pavadinimu ir kokia reikšme). Programa gaus tą patį puslapį ir palygins rezultatus.
Papildoma literatūra
Šiuose straipsniuose aprašomi žingsniai WebOké valdymo skydeliuose; kituose skydeliuose jie veikia panašiai.
- DirectAdmin vadovas 1.9: Sąvokų paaiškinimai: domenas, subdomenas, pointeris, DNS, pašto dėžutė ir duomenų bazė
- DirectAdmin vadovas 14.1: PHP versijos pasirinkimas (Select PHP version)
- Nemokamas DNS kursas 1.4: DNS užklausos kelionė
- Šablonų hierarchija (developer.wordpress.org, anglų kalba): https://developer.wordpress.org/themes/basics/template-hierarchy/
