Ενότητα 1 · 1.2
Κάτω από το καπό: διακομιστής, PHP και βάση δεδομένων
Ενότητα 1: Πώς λειτουργεί το WordPress · Χρόνος ανάγνωσης: 8 λεπτά
Μαθησιακός στόχος: Μετά από αυτό το μάθημα θα μπορείτε να εξηγήσετε βήμα προς βήμα πώς ένα αίτημα σελίδας στο WordPress γίνεται σελίδα HTML, και πού μια cache συντομεύει αυτή τη διαδρομή.
Βασικές έννοιες: διακομιστής (LiteSpeed, Apache, nginx), PHP, MariaDB/MySQL, query, index.php, ιεραρχία προτύπων (template hierarchy), δυναμικό έναντι στατικού, TTFB
Μια στατική και μια δυναμική σελίδα
Σε έναν στατικό ιστότοπο, κάθε σελίδα βρίσκεται ως έτοιμο αρχείο στον διακομιστή. Ο διακομιστής παίρνει το αρχείο και το αποστέλλει. Αυτό είναι γρήγορο και απλό, αλλά κάθε αλλαγή σημαίνει νέο αρχείο.
Το WordPress είναι δυναμικό: η σελίδα υπάρχει μόνο τη στιγμή που κάποιος τη ζητά. Δεν υπάρχει αρχείο contact.html. Υπάρχει ένα κομμάτι κειμένου στη βάση δεδομένων, ένα θέμα εμφάνισης με πρότυπα και ένα σύνολο κώδικα PHP που συνδυάζει τα δύο. Αυτό προσφέρει ευκολία (προσαρμόζετε το κείμενο μέσα από το πρόγραμμα περιήγησής σας), αλλά απαιτεί υπολογιστική εργασία σε κάθε επίσκεψη. Αν κατανοήσετε αυτή την υπολογιστική εργασία, θα κατανοήσετε αργότερα και γιατί ένας ιστότοπος είναι αργός, γιατί η cache κάνει τόσο μεγάλη διαφορά και γιατί μια αναβάθμιση PHP μπορεί να προκαλέσει πρόβλημα.
Το ταξίδι ενός αιτήματος σελίδας
Ας υποθέσουμε ότι ένας επισκέπτης ανοίγει το https://example.com/contact/. Αυτό συμβαίνει:
- DNS: το πρόγραμμα περιήγησης αναζητά τη διεύθυνση IP του
example.com(δείτε το μάθημα DNS). Δημιουργεί ασφαλή σύνδεση με αυτή τη διεύθυνση. - Διακομιστής (webserver): στον διακομιστή τρέχει ένας διακομιστής ιστού, για παράδειγμα LiteSpeed, Apache ή nginx. Αυτός λαμβάνει το αίτημα. Αν υπάρχει πραγματικό αρχείο ή φάκελος με αυτό το όνομα (μια εικόνα, ένα stylesheet), το αποστέλλει απευθείας. Αν όχι, ισχύει ο κανόνας από το
.htaccess(στο LiteSpeed και στο Apache) ή από τη ρύθμιση του nginx: «δώσε ό,τι δεν υπάρχει στοindex.php». - PHP: το
index.phpείναι αρχείο PHP. Ο διακομιστής αναθέτει την εκτέλεσή του στην PHP, τη γλώσσα προγραμματισμού στην οποία είναι γραμμένο το WordPress. Η PHP φορτώνει πρώτα τοwp-config.php(τις ρυθμίσεις, με τα στοιχεία της βάσης δεδομένων), μετά τον υπόλοιπο πυρήνα του WordPress, μετά όλα τα ενεργά πρόσθετα και το ενεργό θέμα εμφάνισης. - Βάση δεδομένων: το WordPress ελέγχει ποιο περιεχόμενο αντιστοιχεί στο
/contact/και θέτει ερωτήματα στη βάση δεδομένων (MariaDB ή MySQL): ποια σελίδα έχει το slugcontact, ποιες είναι οι ρυθμίσεις του ιστοτόπου, ποιο μενού αντιστοιχεί; Ένα τέτοιο ερώτημα ονομάζεται query. Μια απλή σελίδα κοστίζει ήδη δεκάδες queries· με πρόσθετα μπορεί να γίνουν εκατοντάδες. - Θέμα εμφάνισης: το WordPress επιλέγει ποιο πρότυπο του θέματος εμφάνισης θα διαμορφώσει τη σελίδα. Αυτό γίνεται σύμφωνα με την ιεραρχία προτύπων (template hierarchy): για μια σελίδα με slug
contact, το WordPress αναζητά πρώτα ένα πρότυποpage-contact, μετάpage-<id>(τον αριθμό της σελίδας), μετάpage, μετάsingularκαι τέλοςindex. Το πρώτο που υπάρχει, κερδίζει. - Επιστροφή HTML: το αποτέλεσμα είναι μια σελίδα HTML που η PHP παραδίδει στον διακομιστή, και ο διακομιστής στο πρόγραμμα περιήγησης.
- Το πρόγραμμα περιήγησης διαβάζει την HTML και στη συνέχεια ανακτά τα stylesheets, τα scripts, τις γραμματοσειρές και τις εικόνες. Αυτά είναι κανονικά αρχεία, οπότε προέρχονται απευθείας από τον διακομιστή (ή από μια cache).
Ανάμεσα στο βήμα 2 και το βήμα 6 βρίσκεται ο χρόνος που χρειάζεται ο διακομιστής για να δημιουργήσει τη σελίδα. Αυτό το βλέπετε ως TTFB (time to first byte): τον χρόνο ανάμεσα στο αίτημα και το πρώτο byte της απάντησης. Σε έναν καλά ρυθμισμένο ιστότοπο αυτός είναι αρκετά κάτω από ένα δευτερόλεπτο. Στην ενότητα 6 θα το μετρήσετε μόνοι σας.
Γιατί κάθε πρόσθετο μετράει
Στο βήμα 3 φορτώνονται όλα τα ενεργά πρόσθετα, σε κάθε αίτημα. Ακόμα κι αν αυτό το πρόσθετο δεν κάνει τίποτα σε αυτή τη σελίδα. Ένα πρόσθετο για γκαλερί φωτογραφιών φορτώνεται λοιπόν και όταν κάποιος ανοίξει τη σελίδα επικοινωνίας σας. Κάθε πρόσθετο μπορεί να εκτελέσει επιπλέον queries, να φορτώσει επιπλέον κώδικα και να προσθέσει επιπλέον scripts στη σελίδα.
Αυτό εξηγεί δύο πράγματα που θα συναντήσετε συχνά σε αυτό το μάθημα:
- Λιγότερα πρόσθετα είναι συνήθως πιο γρήγορα. Όχι επειδή μετράει ο αριθμός καθαυτός, αλλά επειδή κάθε πρόσθετο μπορεί να εκτελεί εργασία σε κάθε αίτημα.
- Ένα χαλασμένο πρόσθετο μπορεί να ρίξει ολόκληρο τον ιστότοπο. Αν κάτι πάει στραβά στο βήμα 3 (για παράδειγμα ένα πρόσθετο που δεν λειτουργεί με τη νέα έκδοση PHP), η PHP δεν φτάνει ποτέ στο βήμα 6. Ο επισκέπτης βλέπει μια λευκή σελίδα ή το μήνυμα «Υπήρξε ένα κρίσιμο σφάλμα σε αυτόν τον ιστότοπο» (μάθημα 5.4).
Από πού προέρχονται η PHP και η βάση δεδομένων
Η PHP και η βάση δεδομένων εκτελούνται στον διακομιστή του παρόχου φιλοξενίας σας. Εσείς συνήθως επιλέγετε την έκδοση PHP στον πίνακα ελέγχου (στο DirectAdmin αυτό ονομάζεται Select PHP version, δείτε το μάθημα 8.4). Η βάση δεδομένων δημιουργείται κατά την εγκατάσταση· ο installer το κάνει συχνά αυτόματα για εσάς (μάθημα 2.2).
Μερικά πράγματα που αξίζει να θυμάστε:
- Έκδοση PHP: κάθε νέα έκδοση PHP είναι πιο γρήγορη και πιο ασφαλής, αλλά παλιός κώδικας μπορεί να μην λειτουργήσει σωστά σε αυτή. Το wordpress.org συνιστά αυτή τη στιγμή PHP 8.3 ή νεότερη (κατάσταση Νοέμβριος 2026).
- Βάση δεδομένων: το wordpress.org συνιστά MariaDB 10.11 ή νεότερη, ή MySQL 8.0 ή νεότερη. Η MariaDB είναι μια διακλάδωση (fork) της MySQL· για το WordPress δεν υπάρχει διαφορά.
- Η βάση δεδομένων βρίσκεται συνήθως στον ίδιο διακομιστή (το
DB_HOSTείναι τότεlocalhost). Σε μεγαλύτερες υπηρεσίες φιλοξενίας μπορεί να βρίσκεται σε ξεχωριστό διακομιστή.
Cache: η συντόμευση της διαδρομής
Αν εκατό επισκέπτες ζητήσουν την ίδια σελίδα επικοινωνίας, το WordPress τη δημιουργεί εκατό φορές χωρίς cache. Κάθε φορά τα ίδια queries, το ίδιο πρότυπο, η ίδια HTML. Μια cache σελίδας αποθηκεύει την HTML μετά την πρώτη φορά. Ο επόμενος επισκέπτης λαμβάνει την αποθηκευμένη έκδοση: τα βήματα 3 έως και 6 παραλείπονται.
Zonder cache: browser > webserver > PHP > WordPress + plugins > database > thema > HTML
Met cache: browser > webserver > opgeslagen HTMLΓι' αυτό η cache δίνει το μεγαλύτερο κέρδος ταχύτητας (μάθημα 6.2). Αυτό εξηγεί επίσης μια συχνή παρεξήγηση: «άλλαξα το κείμενο, αλλά βλέπω την παλιά έκδοση.» Τότε βλέπετε μια αποθηκευμένη έκδοση· μετά το άδειασμα της cache θα δείτε τη νέα.
Δεν επιτρέπεται όλα να προέρχονται από μια cache. Ένας συνδεδεμένος διαχειριστής, ένα καλάθι αγορών ή μια σελίδα ολοκλήρωσης παραγγελίας είναι διαφορετικά για κάθε επισκέπτη. Ένα καλό πρόσθετο cache τα παραλείπει αυτά.
Κεφαλίδες: τι σας λέει ο διακομιστής
Κάθε απάντηση ενός διακομιστή ξεκινά με κεφαλίδες (headers), πριν από την HTML. Αυτές δεν τις βλέπετε στη σελίδα, αλλά τις βλέπετε στα εργαλεία προγραμματιστή του προγράμματος περιήγησής σας (F12, καρτέλα Δίκτυο, κάντε κλικ στο πρώτο αίτημα). Ένα παράδειγμα:
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: hit- Το
serverδηλώνει ποιος διακομιστής απαντά. - Το
linkμεwp-jsonαποκαλύπτει ότι πρόκειται για WordPress. - Το
x-litespeed-cache: hitσημαίνει ότι αυτή η σελίδα προήλθε από την cache του LiteSpeed. Άλλες cache χρησιμοποιούν άλλα ονόματα, όπωςx-cache: HITήcf-cache-status: HITστο Cloudflare.
Δεν χρειάζεται να απομνημονεύσετε αυτές τις γραμμές. Αλλά όποιος μπορεί να τις διαβάσει, μπορεί να εντοπίσει πολλά προβλήματα μόνος του.
Σύνοψη
- Το WordPress δημιουργεί κάθε σελίδα τη στιγμή του αιτήματος: διακομιστής, PHP, πρόσθετα, βάση δεδομένων, θέμα εμφάνισης, HTML.
- Σε κάθε αίτημα φορτώνονται όλα τα ενεργά πρόσθετα· ένα χαλασμένο πρόσθετο μπορεί να σταματήσει ολόκληρο τον ιστότοπο.
- Η ιεραρχία προτύπων καθορίζει ποιο πρότυπο του θέματος εμφάνισης διαμορφώνει μια σελίδα.
- Μια cache σελίδας παραλείπει την υπολογιστική εργασία δίνοντας αποθηκευμένη HTML. Συνδεδεμένοι χρήστες και καλάθια αγορών δεν ανήκουν σε αυτή την cache.
- Οι κεφαλίδες μιας απάντησης δηλώνουν ποιος διακομιστής απαντά και αν η σελίδα προήλθε από cache.
Κουίζ
Άσκηση
Άσκηση A1.2: Διαβάστε τις κεφαλίδες του ιστότοπού σας. Ανοίξτε τον δικό σας ιστότοπο (ή το wordpress.org) με τα εργαλεία προγραμματιστή του προγράμματος περιήγησής σας (F12, καρτέλα Δίκτυο, ανανεώστε τη σελίδα, κάντε κλικ στο πρώτο αίτημα). Συμπληρώστε ποιος διακομιστής αναγράφεται στην κεφαλίδα server (ή «κανένας» αν δεν υπάρχει) και αν υπάρχει κεφαλίδα που δηλώνει ότι η σελίδα προήλθε από cache (ποιο όνομα και ποια τιμή). Το πρόγραμμα ζητά την ίδια σελίδα και συγκρίνει.
Περαιτέρω ανάγνωση
Αυτά τα άρθρα περιγράφουν τα βήματα στους πίνακες ελέγχου του WebOké· σε άλλους πίνακες ελέγχου λειτουργούν παρόμοια.
- Εγχειρίδιο DirectAdmin 1.9: Begrippen uitgelegd: domain, subdomain, pointer, DNS, mailbox en database
- Εγχειρίδιο DirectAdmin 14.1: Η επιλογή της έκδοσης PHP (Select PHP version)
- Δωρεάν μάθημα DNS 1.4: Το ταξίδι ενός ερωτήματος DNS
- Ιεραρχία προτύπων (developer.wordpress.org, Αγγλικά): https://developer.wordpress.org/themes/basics/template-hierarchy/
