Authcache: Και οι registered χρήστες έχουν ψυχή

1

Πρόσφατα χρειάστηκε να πειραματιστώ με ένα Drupal site στο οποίο θα έπρεπε να έχουμε την ταχύτητα που καταφέρνουμε για τους unregistered users και για τους registered χρήστες. Ως γνωστό, το boost module που χρησιμοποιείται κατά κόρον στα Drupal sites, κάνει ένα πολύ καλό caching για τους επισκέπτες των sites μας, αλλά τι γίνεται με τους χρήστες που θα μπουν και θα συνδεθούν με τα στοιχεία τους; Γιατί να μην έχουν και αυτοί καλύτερες ταχύτητες;

Η λύση

Η λύση που προτείνουμε λοιπόν, είναι ό,τι πρέπει για ένα απλό configuration δίχως απαιτητικές τεχνικές caching από πλευράς server. Αν δηλαδή ο server μας είναι ένας απλός web server δίχως Varnish, Opcache, Memcache κλπ, μπορεί να είναι μια πολύ αποδοτική λύση για γρήγορο page surfing στους logged in users. Το module λέγεται authcache και η φιλοσοφία του πλησιάζει πολύ αυτή του boost.

Την πρώτη φορά που θα αιτηθεί μια σελίδα από κάποιον, το τελικό HTML αποτέλεσμα θα αποθηκευτεί για τις επόμενες κλήσεις της. Μια ξεχωτιστή cached version της σελίδας αποθηκεύεται για κάθε user role ξεχωριστά ώστε να μπορούμε να επιτρέψουμε ή να αποκλείσουμε ανά ρόλο την χρήση του.

Όταν κληθεί μια σελίδα από την cache, σερβίρεται άμεσα ως στατική και έπειτα γίνονται επιπλέον AJAX κλήσεις “ελαφράς μορφής” στο drupal που θα εκτελούν ερωτήματα στην SQL για ενημέρωση ιστορικότητας ή/και στατιστικών του χρήστη, και επιστρέφονται προσωποποιημένα δεδομένα στην σελίδα όπως tokens για φόρμες, default values για φόρμες κλπ.

Και πού είναι τα cached αρχεία;

Ένα πλεονέκτημα έναντι του boost είναι ότι με την χρήση συνεργαζόμενων modules, το authcache μπορεί να αποθηκεύσει τις cached σελίδες του σε διάφορα σημεία και με διάφορες τεχνολογίες. Στην βάση δεδομένων, στον Varnish, στην Memcache, APC κλπ.

Εξ ορισμού, το authcache αποθηκεύει τις cached σελίδες στην βάση δεδομένων. Εκ πρώτης όψεως είναι δελεαστική και εύκολη λύση αλλά μπορεί να δημιουργηθούν προβλήματα υπορφόρτωσης της MySQL σε μεγάλη επισκεψιμότητα καθώς η MySQL θα στέλνει όλη την πληροφορία της εκάστοτε σελίδας στον apache σε κάθε κλήση. Αυτό μπορεί άμεσα να μεγαλώσει το data rate μεταξύ MySQL και Apache, καθώς και την αύξηση του όγκου της βάσης μας κάνοντάς την σε ορισμένες περιπτώσεις πιο δύσχρηστη από πλευράς συντήρησης και διαχείρισης.

Μια εύκολη και λιγότερο server side παρεμβατική λύση είναι η χρήση του File Cache. Το συγκεκριμένο module, αποθηκεύει ό,τι ήταν να αποθηκευθεί στην βάση, σε αρχεία HTML. Έτσι, στην MySQL αποθηκεύεται μόνο η ηλικία και το url της εκάστοτε cached σελίδας και ο χρήστης θα δεί την HTML που βρίσκεται στην ουσία μέσα στο sites/default/files φάκελο.

Όπως και (σχεδόν) όλα τα άλλα cached related modules που χρησιμοποιούμε, έτσι και το authcache έχει ρυθμίσεις για minimum και maximum διάρκεια ζωής της cache, triggers για cache updates, debugging modes και πολλά άλλα.

Στο δια ταύτα

Ας δούμε λίγα νούμερα. Σε συνδεδεμένο χρήστη, για μια απλή σελίδα με 2 views, 3 blocks, 2 menus κλπ κλπ, ο μέσος χρόνος για το rendering κυμαίνεται στα ~650ms. Σε ένα απλό configuration λοιπόν, ένας registered user θα περίμενε ~650ms μόνο και μόνο για να ξεκινήσει ο server να στείλει το 1ο byte της σελίδας. Με την χρήση του authcache, ο χρόνος έπεσε στα ~48ms.

Τα νούμερα αν και είναι για 64bit Windows 7 laptop με SSD και άφθονη μνήμη, δίνουν τη τάξη μεγέθους της βελτίωσης που μπορούμε να πετύχουμε με 2 απλές κινήσεις. Αν βέβαια στην διάθεσή μας έχουμε και Varnish ή και άλλες server side caching τεχνικές οι χρόνοι μπορεί να βελτιωθούν ακόμα περισσότερο. 

Το Authcache σε συνδυασμό με το σωστό στήσιμο της εγγενούς cache των views μας και του block cache alter που θα μας επιτρέψει να πειράζουμε την cache του κάθε block μας, θα μπορέσουμε με ευκολία να κάνουμε ένα αργό Drupal site, αγνώριστο!

Μιχάλης

Γράφει ο Μιχάλης

Web Developer

Σχολιάστε το άρθρο

Συμβουλές digital marketing από το blog μας

preview του βίντεο Unboxing Regalinas

Website Unboxing Regalinas

Δείτε πώς ανακατασκευάσαμε το ηλεκτρονικό κατάστημα μόδας Regalinas.gr και τι αποτέλεσμα έφερε αυτή η ανακατασκευή.

Δείτε το video
preview του βίντεο του βίντεο με την Εύη Λούλη

Η Εύη Λούλη μιλάει για τη Netstudio

Η Εύη Λούλη, υπεύθυνη Marketing του Ομίλου Λούλη, μιλάει για τη συνεργασία του Ομίλου Λούλη με τη Netstudio.

Δείτε το video
preview του βίντεο με τα 4 πιο σημαντικά σημεία σε κάθε site ή e-shop

Τα 4 πιο σημαντικά σημεία σε κάθε site ή e-shop

Δείτε ποια είναι τα πρώτα σημεία που κοιτάω ΚΑΘΩΣ μιλάω στο τηλέφωνο με υποψήφιους πελάτες που μου ζητούν να προτείνω βελτιώσεις στο site τους.

Δείτε το video
preview του video του GS Diamonds

GS Diamonds Website Unboxing (με υπότιτλους)

Δείτε στο video πώς φτιάξαμε ένα από τα πιο πολύπλοκα και εντυπωσιακά μας project. Το GS Diamonds, το eshop του μεγαλύτερου εμπόρου διαμαντιών στην Αυστραλία.

Δείτε το video
preview του video με τον Αποστόλη του White Goods

Σκέψεις & ανησυχίες ενός νέου για το ηλεκτρονικό εμπόριο

Δείτε στο video απόσπασμα από εσωτερική συζήτηση προόδου, 7 μήνες μετά τη δημοσίευση του καινούριου site του White Goods.

Δείτε το video
preview του βιντεο πως να μετρήσετε την ταχύτητα του site σας

Πώς να μετρήσετε την ταχύτητα του site σας

Μετρήστε και βελτιστοποιήσετε την ταχύτητα φορτώματος του site σας ή του e-shop σας.

Δείτε το video
preview του βιντεο τι είναι το usability testing

Εισαγωγή στο Usability Testing και στο Userfeel με τη Netstudio

Τι είναι το usability testing και πώς μπορεί η Netstudio να σας βοηθήσει να βελτιστοποιήσετε το site σας, το eshop σας ή την εφαρμογή σας.

Δείτε το video
preview του βιντεο Website Unboxing Forel.gr

"Από την πρώτη στιγμή καταλάβαμε ότι θα τα πάμε καλά. Και τελικά είχαμε δίκιο. Τα πήγαμε πολύ καλά."

Δείτε πώς φτιάξαμε το e-shop μόδας Forel.gr και πώς σχολιάζει τη συνεργασία ο Μάκης Χατζούλας.

Δείτε το video