Web Development
Caching στο Drupal
Τι είναι το caching και πως λειτουργεί στο Drupal?
Τι είναι το Caching;
Το caching είναι μια τεχνική μέσω της οποία αποθηκεύουμε στατικές εκδοχές ενός δυναμικού ιστοτόπου σε φακέλους ή ακόμη και στη βάση δεδομένων, με σκοπό να μειώσουμε τη χρήση επεξεργαστικών πόρων στον διακομιστή. Οι περισσότεροι μηχανισμοί caching επικεντρώνονται στην κατά το δυνατό αποδέσμευση της βάσης δεδομένων από το χτίσιμο μιας ιστοσελίδας καθότι η sql συνήθως είναι αυτή που κάνει τα sites να καθυστερούν, ιδίως όταν τα σύνολα δεδομένων αυξάνουν.
Η συνήθης τεχνική είναι να αποθηκεύονται ολόκληρες σελίδες ή μέρη σελίδων σε στατικά αρχεία ή στη βάση δεδομένων για συγκεκριμένο χρονικό διάστημα. Για όσο υπάρχουν τα στατικά αυτά αρχεία, διατίθενται αυτά στους επισκέπτες του ιστοτόπου και δεν γίνονται πρόσθετες πράξεις για υπολογισμό και άντληση δεδομένων από την βάση δεδομένων, ούτε εκτελείται κώδικας γλώσσας υψηλού επιπέδου (php, jsp, asp κ.ά.) προκειμένου να σερβιριστεί μία σελίδα από τον διακομιστή. Αυτό που λειτουργεί ουσιαστικά είναι ο web server ο οποίος σερβίρει απλά την προϋπολογισμένη html χωρίς να επιβαρύνει τον server με sql queries και προγραμματιστικούς υπολογισμούς.
Caching παντού;
Η τεχνική caching είναι υποβοηθητική και σημαντική για τη λειτουργία πολλών ιστοτόπων, δεν μπορεί όμως να εφαρμόζεται παντού και ανεξέλεγκτα καθότι υπάρχουν πολλοί ιστότοποι (ή επιμέρους λειτουργίες ιστοτόπων), οι οποίοι σερβίρουν απολύτως δυναμικό περιεχόμενο στους επισκέπτες τους.
Όταν υπάρχει ανάγκη για απόλυτα δυναμικό περιεχόμενο τότε αποφεύγεται το caching ή ενεργοποιείται σε όλα τα επιμέρους τμήματα της σελίδας που δεν χρήζουν αυτής της ανάγκης. Συνήθως αποφεύγεται το caching σε σημεία όπου ο χρήστης έχει κάνει login στην ιστοσελίδα (εφόσον υπάρχει περιοχή χρηστών) γιατί από εκείνο το σημείο και έπειτα ο χρήστης βλέπει ειδικό περιεχόμενο που αφορά μόνο αυτόν.
Όταν μια ιστοσελίδα φτιάχνεται με custom κώδικα, είναι στην ευχέρεια και εμπειρία του προγραμματιστή να εφαρμόσει τεχνικές κασαρίσματος ακόμη και σε δυναμικές σελίδες κασάροντας επιμέρους τμήματα της σελίδας σε ενδιάμεσα στατικά αρχεία και αντλώντας δυναμικά μόνο τα κομμάτια που διαφοροποιούν τη σελίδα ως προς τον χρήστη που την επισκέπτεται.
Αντιθέτως όταν ο κώδικας στηρίζεται σε έτοιμο λογισμικό, τότε είθισται να χρησιμοποιούνται έτοιμες δομές για κασάρισμα οι οποίες αναπόφευκτα δεν θα κάνουν τόσο εξειδικευμένες λειτουργίες, καθότι θα πρέπει να είναι σε θέση να εξυπηρετήσουν πολλών ειδών εγκαταστάσεις της ίδιας πλατφόρμας. Σπανίως υπάρχει ευχέρεια από μέρους του προγραμματιστή να εξειδικεύσει το caching μίας έτοιμης εφαρμογής, λόγω ανάγκης συμβατότητας με μελλοντικές αναβαθμίσεις της εφαρμογής αλλά κυρίως για λόγους κόστους υλοποίησης των πιο ειδικών δομών σε μια εφαρμογή με αχανές codebase.
Caching στο Drupal
To caching στο Drupal αφορά μόνο τους χρήστες που δεν έχουν κάνει login στην ιστοσελίδα. Όταν κάποιος κάνει login βλέπει τη σελίδα πλήρως δυναμικά και εξαιρείται από τους μηχανισμούς κασαρίσματος.
Η παραπάνω λογική υλοποίησης caching δίνει μία μεγάλη δυναμική σε ιστοσελίδες με μεγάλη επισκεψιμότητα μη εγγεγραμμένων (anonymous) χρηστών καθότι όλοι αυτοί οι επισκέπτες εξυπηρετούνται από κασαρισμένες σελίδες και δεν επιβαρύνουν σημαντικά τον server.
Αντιθέτως όταν οι περισσότεροι χρήστες κάνουν χρήση της σελίδας μετά από login (π.χ. facebook) τότε η παραπάνω λογική δεν εξυπηρετεί. Σε ένα τέτοιο σενάριο χρήσης θα πρέπει ο προγραμματιστής να εξειδικεύσει το caching σε επιμέρους τμήματα της σελίδας και προκειμένου να αποσυμφορήσει τη χρήση του επεξεργαστή και της μνήμης στον server. To Drupal δίνει τη δυνατότητα στον προγραμματιστή να συντάξει ειδικό κώδικα και να γράψει δικά του modules προκειμένου να υλοποιήσει τέτοιες υβριδικές δομές, που θα λειτουργούν εν μέρη στατικά και εν μέρη δυναμικά.
Αν θέλετε να ενεργοποιήσετε το γενικό caching του Drupal μπορείτε να ακολουθήσετε τα παρακάτω απλά βήματα:
- Συνδεθείτε ως διαχειριστής και πλοηγηθείτε στη διαδρομή Site Configuration > Performance.
- Έπειτα κάτω από το Caching mode: επιλέξτε Normal και κάτω από το Block cache: επιλέξτε Enabled (Οι ρυθμίσεις αυτές συνιστώνται για τις περισσότερες ιστοσελίδες).
- Τέλος κάντε κλικ στο Save configuration για να αποθηκεύσετε τις αλλαγές σας.
Για να εξελίξετε το caching του Drupal μπορείτε να ανατρέξετε σε πρόσθετα Modules για caching που θα βρείτε στην επίσημη ιστοσελίδα της κοινότητας του Drupal ή ακόμη να απευθυνθείτε και σε κάποιον Drupal Specialist, που θα έχει την κατάρτιση και ευχέρεια υλοποίησης ειδικών δομών στην ιστοσελίδα σας.