Φιλοξενία και απόδοση
Πώς κάνουμε το WordPress γρήγορο: LiteSpeed Enterprise, LSCache και Redis ανά ιστότοπο
Το ταχύτερο αίτημα WordPress είναι αυτό που δεν εκτελείται ποτέ — δείτε πώς η υποδομή μας εξυπηρετεί τις περισσότερες επισκέψεις από την προσωρινή μνήμη πριν καν κληθεί η PHP ή η MySQL, και τι σημαίνει αυτό για τα Core Web Vitals.
Το ταχύτερο αίτημα είναι αυτό που δεν εκτελείται ποτέ
Ένα τυπικό αίτημα στο WordPress είναι δαπανηρό από πλευράς πόρων. Ο διακομιστής ιστού παραδίδει την επεξεργασία στην PHP, η PHP εκκινεί το WordPress, εκτελεί τα πρόσθετα, υποβάλλει δεκάδες ερωτήματα στη MySQL, συνθέτει το HTML και μόνο τότε στέλνει πίσω δεδομένα. Σε έναν ιστότοπο με μεγάλη επισκεψιμότητα, όλη αυτή η διαδικασία λαμβάνει χώρα για κάθε επισκέπτη και εκεί αναλώνεται σχεδόν ολόκληρος ο χρόνος μέχρι το πρώτο byte (TTFB).
Η απάντησή μας είναι να διασφαλίσουμε ότι, για τις περισσότερες επισκέψεις, τίποτα από αυτά δεν συμβαίνει καθόλου. Σε όλους τους ιστότοπους που φιλοξενούμε — πάνω από 100.000 ιστότοποι PBN συν το συμβατικό διαχειριζόμενο WordPress — η συντριπτική πλειονότητα των προβολών σελίδων front-end εξυπηρετείται ως μια πλήρης προ-αποδοθείσα σελίδα απευθείας από την κρυφή μνήμη, χωρίς την κλήση της PHP ή την επαφή με τη βάση δεδομένων. Το υπόλοιπο αυτής της ανάρτησης αφορά τον τρόπο με τον οποίο συνδυάζονται τα επίπεδα που το καθιστούν πραγματικότητα και πού κερδίζει το καθένα τη θέση του.
Το βασικό πλαίσιο είναι ότι αυτές δεν είναι ανταγωνιστικές προσωρινές μνήμες μεταξύ των οποίων πρέπει να επιλέξετε. Η προσωρινή μνήμη πλήρους σελίδας, η προσωρινή μνήμη αντικειμένων και το άκρο του CDN καλύπτουν το καθένα διαφορετική κατηγορία αιτημάτων, και η πραγματική αξία έγκειται στον τρόπο με τον οποίο συνεργάζονται και παραδίδουν δεδομένα μεταξύ τους.
LiteSpeed Enterprise + LSCache: το επίπεδο πλήρους σελίδας
Κάθε ιστότοπος εκτελείται σε LiteSpeed Enterprise με LSCache σε επίπεδο διακομιστή. Όταν μια απόκριση front-end μπορεί να αποθηκευτεί στην προσωρινή μνήμη, ο διακομιστής web τη σημαίνει με κεφαλίδες LiteSpeed cache-control και ετικετών, και το LiteSpeed εξυπηρετεί την πλήρη σελίδα απευθείας στο επόμενο αίτημα — δεν δημιουργείται καμία διεργασία PHP, δεν εκτελείται κανένα ερώτημα MySQL. Αυτός είναι ο σημαντικότερος παράγοντας για το WordPress TTFB, επειδή αφαιρεί πλήρως την εκκίνηση της εφαρμογής από την κρίσιμη διαδρομή.
Επειδή το LSCache εκτελείται εντός του διακομιστή ιστού και όχι σε κάποιο πρόσθετο PHP, ξεκινά τη λειτουργία του νωρίτερα στον κύκλο ζωής του αιτήματος και διατηρεί τις σελίδες σε μορφή που ο διακομιστής μπορεί να εκκαθαρίσει άμεσα. Ένας ανιχνευτής προσωρινής μνήμης διατηρεί τις δημοφιλείς σελίδες έτοιμες, ώστε ο πρώτος επισκέπτης μετά από μια εκκαθάριση να μην επιβαρύνεται με την εκ νέου δημιουργία της σελίδας. Το αποτέλεσμα είναι ένα σαφώς χαμηλότερο και πιο συνεπές TTFB σε σύγκριση με μια προσωρινή μνήμη μόνο μέσω πρόσθετου που προσαρτάται σε ένα κοινό σύστημα, όπου η προσωρινή μνήμη εξακολουθεί να βρίσκεται πίσω από την PHP.
Το δικό μας πρόσθετο προσωρινής μνήμης επιπέδου αποθετηρίου παρέχεται προεγκατεστημένο και με αυτόματη ενημέρωση σε κάθε ιστότοπο, συνδέοντας σωστά το WordPress με το LSCache εξαρχής. Σε διακομιστή προέλευσης που δεν είναι LiteSpeed, απλώς δεν εκπέμπει κεφαλίδες πλήρους σελίδας και παραμερίζει, ενώ η προσωρινή μνήμη αντικειμένων και οι κανόνες εξαίρεσης συνεχίζουν να λειτουργούν — έτσι ώστε ένας ιστότοπος που έχει μεταφερθεί να μην παραμένει ποτέ σε κατεστραμμένη, ημι-διαμορφωμένη κατάσταση.
Διατηρώντας την ταχύτητα χωρίς παροχή παρωχημένου περιεχομένου: ESI και έξυπνη αυτόματη εκκαθάριση
Η επιθετική προσωρινή αποθήκευση πλήρους σελίδας έχει δύο κλασικούς τρόπους αστοχίας: την παροχή της σελίδας κάποιου άλλου σε έναν συνδεδεμένο χρήστη και την παροχή σε οποιονδήποτε μιας σελίδας που θα έπρεπε να έχει αλλάξει. Και τα δύο επιλύονται στο επίπεδο προσωρινής αποθήκευσης και όχι με λιγότερη προσωρινή αποθήκευση.
Το ESI (Edge Side Includes) μας επιτρέπει να αποθηκεύουμε την ιστοσελίδα στην κρυφή μνήμη, διατηρώντας δυναμικά τα τμήματα που πρέπει να παραμένουν ζωντανά. Σε ένα κατάστημα WooCommerce, οι σελίδες καταλόγου, προϊόντων και κατηγοριών παρέχονται ως πλήρης κρυφή μνήμη σελίδας για το ταχύτερο δυνατό TTFB, ενώ το ESI αποδίδει το απόσπασμα του καλαθιού, τα σύνολα του μίνι καλαθιού και την κατάσταση του λογαριασμού ανά αίτημα. Το καλάθι, το ταμείο, ο λογαριασμός μου και οποιεσδήποτε σελίδες nonce ή περιόδου σύνδεσης εξαιρούνται από προεπιλογή. Οι αγοραστές βλέπουν πάντα το δικό τους καλάθι και ένα λειτουργικό ταμείο, ενώ όλοι εξακολουθούν να λαμβάνουν τη βιτρίνα του καταστήματος από την κρυφή μνήμη.
Η ανανέωση διαχειρίζεται μέσω έξυπνης αυτόματης εκκαθάρισης. Τα purge hooks ενεργοποιούνται αυτόματα όταν αλλάζει περιεχόμενο, προϊόντα, τιμές ή παραγγελίες, έτσι ώστε οι σχετικές αποθηκευμένες σελίδες να ανανεώνονται αμέσως αντί να βασίζονται σε χρονοδιακόπτη, ενώ μπορείτε επίσης να κάνετε εκκαθάριση κατ' απαίτηση από τον πίνακα ελέγχου ή μέσα από το WordPress. Η εκκαθάριση βάσει ετικετών σημαίνει ότι η επεξεργασία μιας δημοσίευσης εκκαθαρίζει τη συγκεκριμένη δημοσίευση και τα αρχεία της — όχι ολόκληρη την προσωρινή μνήμη — επομένως μια μεμονωμένη επεξεργασία δεν προκαλεί ψυχρή εκκίνηση σε ολόκληρο τον ιστότοπο.
Προσωρινή μνήμη αντικειμένων Redis ανά ιστότοπο: για ό,τι δεν μπορεί να είναι ολόκληρη σελίδα
Δεν μπορεί κάθε αίτημα να είναι μια στατική πλήρης σελίδα. Οι συνδέσεις χρηστών, η διαχείριση του WordPress, τα καλάθια του WooCommerce, η αναζήτηση και τα δυναμικά τμήματα που αφήνει ενεργά το ESI πρέπει όλα να εκτελούν PHP. Για αυτά, ο στόχος μετατοπίζεται από την «παράκαμψη της εφαρμογής» στην «παράκαμψη της βάσης δεδομένων».
Κάθε ιστότοπος αποκτά τη δική του αποκλειστική μνήμη cache αντικειμένων Redis. Το WordPress αποθηκεύει στην προσωρινή μνήμη τα αποτελέσματα των επαναλαμβανόμενων αναγνώσεων από τη βάση δεδομένων — επιλογές, transients, αναζητήσεις αναρτήσεων και όρων, δεδομένα προϊόντων και συνεδριών του WooCommerce — στη μνήμη, έτσι ώστε το ίδιο ερώτημα να μην εκτελείται στη MySQL σε κάθε επίσκεψη. Το αποτέλεσμα είναι πιο ορατό ακριβώς εκεί όπου η προσωρινή μνήμη πλήρους σελίδας δεν μπορεί να βοηθήσει: ταχύτεροι πίνακες ελέγχου, ταχύτερα καλάθια αγορών και πολύ χαμηλότερο φορτίο στη βάση δεδομένων κατά την κυκλοφορία.
Η μνήμη cache αντικειμένων λειτουργεί ανά ιστότοπο και δεν είναι κοινόχρηστη, γεγονός που παίζει ρόλο τόσο στην απόδοση όσο και στην απομόνωση. Σε συνδυασμό με τον περιορισμό ρυθμού της βάσης δεδομένων ανά ιστότοπο, τα βαριά ή κακογραμμένα ερωτήματα ενός ιστότοπου δεν μπορούν να στερήσουν τους πόρους της βάσης δεδομένων από τους γειτονικούς του. Μπορείτε να διαβάσετε περισσότερα σχετικά με το πώς συνδυάζεται ολόκληρη η πολυεπίπεδη δομή στη σελίδα λειτουργιών προσωρινής αποθήκευσης και σχετικά με τα όρια μεταξύ των μισθωτών στην ενότητα απομόνωσης.
Το edge και η υποκείμενη μεταφορά
Η προσωρινή μνήμη που βρίσκεται στον αρχικό διακομιστή πρέπει και πάλι να διασχίσει το δίκτυο. Μπροστά από τον διακομιστή βρίσκεται το άκρο του CDN, επομένως τα στατικά στοιχεία και οι σελίδες που μπορούν να αποθηκευτούν στην προσωρινή μνήμη εξυπηρετούνται από ένα σημείο παρουσίας κοντά στον επισκέπτη, και ο αρχικός διακομιστής παραμένει ανεπηρέαστος ακόμη και υπό φόρτο. Για τη σειρά φιλοξενίας μας χωρίς ίχνος (footprint-free), το ίδιο άκρο είναι μια συγκέντρωση πολλαπλών CDN κατανεμημένη σε διάφορους παρόχους, η οποία εξυπηρετεί τόσο έναν στόχο αποτροπής ανίχνευσης ίχνους όσο και έναν στόχο απόδοσης· στο σύνηθες WordPress, είναι απλώς ένα γρήγορο, αποδοτικό επίπεδο που διατηρεί τους αρχικούς διακομιστές σε αδράνεια.
Στο παρασκήνιο, δεν έχουν γίνει συμβιβασμοί στα βασικά στοιχεία. Οι ιστότοποι λειτουργούν σε χώρο αποθήκευσης NVMe με HTTP/3, ώστε τα byte που αποστέλλει η προσωρινή μνήμη να φτάνουν μέσω ενός σύγχρονου, πολυπλεγμένου μέσου μεταφοράς με γρήγορη αποθήκευση πίσω από κάθε αποτυχία εύρεσης στην προσωρινή μνήμη (cache miss). Κανένα από αυτά τα επίπεδα δεν είναι πρόσθετο: το LiteSpeed, το LSCache, το Redis ανά ιστότοπο, το NVMe και το HTTP/3 αποτελούν τη βάση σε κάθε πρόγραμμα, όχι μια βαθμίδα αναβάθμισης.
Τι πραγματικά επηρεάζει τα Core Web Vitals
Αξίζει να είμαστε ακριβείς, επειδή η φιλοξενία συχνά υπερεκτιμάται ως προς τα Core Web Vitals. Το TTFB είναι το μέρος της εξίσωσης που ανήκει στον διακομιστή, και η παραπάνω στοίβα προσωρινής αποθήκευσης είναι αυτή που το μειώνει — μια πλήρης σελίδα στην προσωρινή μνήμη που σερβίρεται μέσω HTTP/3 από το άκρο του δικτύου είναι σχεδόν ό,τι χαμηλότερο μπορεί να επιτευχθεί για το TTFB. Επειδή το TTFB είναι η αφετηρία του Largest Contentful Paint, μια γρήγορη προέλευση προσφέρει σε κάθε επακόλουθη μέτρηση ένα προβάδισμα που διαφορετικά δεν θα μπορούσε να έχει.
Όμως τα LCP, CLS και INP κρίνονται κυρίως στο πρόγραμμα περιήγησης, από την ίδια τη σελίδα: μια μη βελτιστοποιημένη κύρια εικόνα (hero image), CSS και JavaScript που μπλοκάρουν την απόδοση, διάταξη που μετατοπίζεται καθώς φορτώνονται γραμματοσειρές και διαφημίσεις, και βαριά επεξεργασία στο κύριο νήμα (main-thread) από πρόσθετα. Καμία ποσότητα προσωρινής αποθήκευσης στον διακομιστή (server caching) δεν διορθώνει μια κύρια εικόνα μεγέθους 2 MB ή ένα θέμα που παρέχει megabytes JavaScript. Η αξιόπιστη φιλοξενία καθιστά τη συμβολή του διακομιστή ουσιαστικά αμελητέα και σταθερή, και στη συνέχεια εξαρτάται από τον ίδιο τον ιστότοπο να διατηρήσει το front end ελαφρύ.
Αυτός ο καταμερισμός εργασίας αποτελεί το χρήσιμο νοητικό μοντέλο. Εμείς εγγυόμαστε ότι το αίτημα φτάνει γρήγορα στο πρόγραμμα περιήγησης και παραμένει γρήγορο υπό συνθήκες υψηλής κίνησης· εσείς διατηρείτε το μέγεθος των δεδομένων μικρό και σταθερό. Εκεί όπου συναντώνται τα δύο — προθέρμανση της προσωρινής μνήμης, παράδοση στο άκρο του δικτύου (edge delivery) και διατήρηση της άμεσης απόκρισης της βάσης δεδομένων ώστε να μην καθυστερούν οι δυναμικές σελίδες — είναι ακριβώς το σημείο όπου έχει βελτιστοποιηθεί το σύστημά μας, και αυτό είναι που καθιστά το διαχειριζόμενο WordPress σε αυτήν την πλατφόρμα ταχύτερο από τον ίδιο ιστότοπο σε έναν κοινό πάροχο φιλοξενίας.
Συχνές ερωτήσεις
Χρειάζομαι ακόμα ένα πρόσθετο προσωρινής αποθήκευσης όπως το WP Rocket;
Όχι. Η προσωρινή αποθήκευση ολόκληρης σελίδας διαχειρίζεται στον διακομιστή ιστού από το LSCache του LiteSpeed, και το δικό μας πρόσθετο προσωρινής αποθήκευσης — προεγκατεστημένο και αυτόματα ενημερωμένο — συνδέει σωστά το WordPress με αυτό, με μια προσωρινή μνήμη αντικειμένων Redis ανά ιστότοπο στο παρασκήνιο. Η προσθήκη ενός δεύτερου πρόσθετου προσωρινής αποθήκευσης ολόκληρης σελίδας συνήθως έρχεται σε διένεξη με την προσωρινή μνήμη σε επίπεδο διακομιστή αντί να βοηθάει, επομένως δεν είναι απαραίτητη και δεν συνιστάται.
Θα επηρεάσει αρνητικά η προσωρινή αποθήκευση το καλάθι μου στο WooCommerce ή τις σελίδες συνδεδεμένων χρηστών;
Όχι. Το καλάθι, το ταμείο, η σελίδα my-account και οποιεσδήποτε σελίδες nonce ή συνεδρίας εξαιρούνται από την προσωρινή μνήμη από προεπιλογή, και το ESI διατηρεί το τμήμα του καλαθιού και τα σύνολα ενεργά σε σελίδες που κατά τα άλλα προσωρινά αποθηκεύονται. Οι αγοραστές βλέπουν πάντα το δικό τους καλάθι και ένα λειτουργικό ταμείο ενώ η βιτρίνα του καταστήματος εξακολουθεί να φορτώνεται από την προσωρινή μνήμη.
Πώς παραμένει ενημερωμένη η προσωρινή μνήμη όταν δημοσιεύω ή επεξεργάζομαι;
Η έξυπνη αυτόματη εκκαθάριση ενεργοποιείται στα σχετικά hooks του WordPress, επομένως η δημοσίευση, η επεξεργασία περιεχομένου ή η αλλαγή προϊόντος, τιμής ή παραγγελίας εκκαθαρίζει μόνο τις επηρεαζόμενες σελίδες και τα αρχεία τους — όχι ολόκληρη την προσωρινή μνήμη — και ένα πρόγραμμα ανίχνευσης τις προθερμαίνει ξανά. Μπορείτε επίσης να εκτελέσετε εκκαθάριση κατ' απαίτηση από τον πίνακα ελέγχου ή μέσα από το WordPress.
Μπορεί η φιλοξενία από μόνη της να μου προσφέρει τέλεια Core Web Vitals;
Σας προσφέρει το καλύτερο δυνατό TTFB, το οποίο αποτελεί το μερίδιο του διακομιστή και ένα προβάδισμα για το Largest Contentful Paint. Ωστόσο, τα LCP, CLS και INP καθορίζονται σε μεγάλο βαθμό από την ίδια τη σελίδα — μεγέθη εικόνων, πόροι που εμποδίζουν την απόδοση, σταθερότητα διάταξης και JavaScript στο κύριο νήμα. Το τεχνολογικό μας σύνολο καθιστά τη συμβολή του διακομιστή γρήγορη και συνεπή· η διατήρηση του φορτίου του front-end σε χαμηλά επίπεδα είναι αυτό που γεφυρώνει το υπόλοιπο κενό.
Σχετικά
Δοκιμάστε το δωρεάν για 14 ημέρες
Εκκινήστε τους πρώτους σας ιστότοπους δωρεάν για 14 ημέρες — χωρίς κάρτα. Μεταφέρετε ένα υπάρχον δίκτυο; Οι μεταφορές είναι δωρεάν, χωρίς κανένα όριο.
Ξεκινήστε δωρεάν