MageSentinel

Full page cache και checkout: όταν το Varnish σερβίρει λάθος σελίδα

Η full page cache — ενσωματωμένη ή μέσω Varnish — είναι το μεγαλύτερο κέρδος ταχύτητας σε ένα κατάστημα Magento. Είναι όμως και μια ήσυχη πηγή σφαλμάτων στο checkout, γιατί μια σελίδα από την cache φαίνεται απόλυτα υγιής σε όποιον την ελέγχει απ’ έξω.

Όλα τα άρθρα2 λεπτά ανάγνωσης

Τακτοποιημένη στοίβα από φύλλα χαρτιού

Τι δεν πρέπει ποτέ να μπαίνει στην cache

Το καλάθι, το checkout και ο λογαριασμός πελάτη είναι προσωπικές σελίδες. Το Magento τις σημειώνει ως μη αποθηκεύσιμες και γεμίζει τα προσωπικά κομμάτια — mini cart, όνομα πελάτη, form keys — με private content που φορτώνει μετά τη σελίδα. Όταν αυτός ο διαχωρισμός δουλεύει, όλοι παίρνουν γρήγορη σελίδα και το δικό τους καλάθι.

Το πρόβλημα ξεκινά όταν ένα custom block ή ένα module τρίτου σημειώσει μια σελίδα του checkout ως αποθηκεύσιμη, ή όταν το Varnish ρυθμιστεί με το χέρι και σταματήσει να περνά τα σωστά cookies. Τότε η κατάσταση ενός πελάτη, ή ένα ληγμένο form key, μπορεί να σερβιριστεί σε πολλούς.

Πώς εμφανίζεται

Τα συμπτώματα είναι παράξενα και διακοπτόμενα: «Invalid Form Key» στην προσθήκη στο καλάθι, mini cart που δείχνει άδειο καλάθι, τιμές που δεν συμφωνούν με τη χρέωση, checkout που φορτώνει αλλά δεν προχωρά. Ένα refresh μερικές φορές το διορθώνει, και γι’ αυτό εύκολα αγνοείται.

Ένας έλεγχος που περιμένει μόνο απάντηση 200 δεν θα το δει ποτέ. Η σελίδα φορτώνει, γρήγορα, από την cache. Μόνο μια πραγματική ροή — προσθήκη προϊόντος, καλάθι, βήματα checkout — δείχνει ότι η κατάσταση πίσω από τη σελίδα είναι λάθος.

Τι να κάνετε

Κρατήστε το Varnish VCL όπως το παράγει το Magento και βάλτε το στο version control μαζί με τον κώδικα, ώστε να αλλάζει μόνο με deploy. Μετά από κάθε εγκατάσταση module, ελέγξτε ότι checkout, καλάθι και σελίδες πελάτη επιστρέφουν ακόμη headers no-cache.

Τρέχετε τη ροή του checkout απ’ έξω σε πρόγραμμα, κάθε φορά ως νέος επισκέπτης. Μια καινούργια συνεδρία είναι ακριβώς αυτό που τιμωρεί ένα λάθος στην cache, άρα είναι ο καλύτερος τρόπος να το πιάσετε πριν το αναφέρουν πελάτες. Σχετικά: κανόνες cache CDN στο WooCommerce και συνεδρίες Redis και χαμένα καλάθια.

Ελέγξτε το δικό σας κατάστημα τώρα με το δωρεάν τεστ checkout Magento: περνά το checkout σε πραγματικό browser, Luma ή Hyvä, και δείχνει το βήμα όπου σταματά.

Συχνές ερωτήσεις

Πρέπει να μπαίνει σε cache το checkout του Magento;

Όχι. Καλάθι, checkout, λογαριασμός πελάτη και τα customer-data sections που φορτώνουν δεν πρέπει ποτέ να έρχονται από full page cache.

Πώς καταλαβαίνω ότι το Varnish σερβίρει λάθος σελίδα;

Οι πελάτες βλέπουν ξένο καλάθι, παλιό mini cart, λάθος τιμές μετά από αλλαγή, ή checkout που χάνει τη συνεδρία. Headers όπως X-Magento-Cache-Debug ή Age δείχνουν αν η σελίδα ήρθε από cache.

Πώς το διορθώνω;

Συγκρίνετε το VCL με αυτό που παράγει το Magento για την έκδοσή σας, μην βάζετε blocks με cacheable="false" σε σελίδες που αποθηκεύονται, και κάνετε purge μετά από αλλαγές ρυθμίσεων.