Πολλά έχουν ειπωθεί πρόσφατα τα πλεονεκτήματα των στατικών τοποθεσιών . Αλλά σε πολλές περιπτώσεις μια δυναμική προσέγγιση είναι μια αναγκαιότητα. Είτε ένα σύστημα διαχείρισης περιεχομένου, ένα εργαλείο σχέσεων με πελάτες είτε ένα ηλεκτρονικό κατάστημα, επιτρέπουν στους τελικούς χρήστες να διατηρούν σύνθετους ιστότοπους γρήγορα και με συνέπεια. Και όταν συνδυαστούν σωστά, μπορούν να ανταγωνιστούν στατικές θέσεις για ταχύτητα.

κάθε εφαρμογή που χρειάζεται να διαβάζει και να γράφει συχνά τα δεδομένα θα προκαλέσει αξιοσημείωτη καθυστέρηση

Οποιοδήποτε σύστημα χρησιμοποιείτε, οι δυναμικές τοποθεσίες συνήθως περιλαμβάνουν παρόμοια στοιχεία. Αυτές είναι μια μορφή web server, backend και μιας εφαρμογής, γραμμένες σε μία ή περισσότερες γλώσσες προγραμματισμού. Αυτός ο συνδυασμός εξαρτημάτων δίνει μεγάλη ευελιξία, αλλά το καθένα συμβάλλει στη δική του επιβάρυνση και αυξάνει το χρόνο φόρτωσης, κάτι που όλοι οι σύγχρονοι ιστότοποι θέλουν να αποφύγουν. Αυτό ισχύει ιδιαίτερα για την πρόσβαση σε βάση δεδομένων · κάθε εφαρμογή που χρειάζεται να διαβάζει και να γράφει συχνά δεδομένα θα προκαλέσει αισθητή καθυστέρηση.

Αυτό θα βοηθήσει τη δημιουργία προσωρινής μνήμης και μια κατάλληλη στρατηγική αποθήκευσης για τη χρήση σας. Ο βασικός στόχος της προσωρινής αποθήκευσης είναι να αποτρέπονται οι περιττές συχνές κλήσεις μεταξύ των επιπέδων της βάσης δεδομένων εφαρμογών και να χρησιμοποιείτε, αντίθετα, προκαθορισμένες στατικές σελίδες HTML, οι οποίες είναι πολύ γρηγορότερες για απόδοση σε ένα πρόγραμμα περιήγησης.

Περιεχόμενα του Browser caching

Η πρώτη μνήμη cache που οποιοσδήποτε χρήστης του ιστού θα είχε παρατηρήσει είναι η μνήμη cache στο πρόγραμμα περιήγησης. Πόσες φορές οι προγραμματιστές σας ζήτησαν να αναλάβετε μια "ανανέωση δύναμης" για να δείτε αλλαγές; Οι κρυφές μνήμες του προγράμματος περιήγησης είναι απλές αλλά αποτελούν ένα καλό σημείο εκκίνησης για να ξεκινήσετε να εξηγείτε τις έννοιες προσωρινής αποθήκευσης. Ένα πρόγραμμα περιήγησης αποθηκεύει αναπαραστάσεις των ιστοσελίδων που επισκέπτονται τον υπολογιστή ενός χρήστη, συνήθως ενημερώνοντάς το μία φορά ανά σύνοδο, αν εντοπιστούν ή εξαναγκαστούν από τον ιστότοπο.

Διαγραφή μεσολάβησης

Ένα κοινό εργαλείο που χρησιμοποιείται από τους ιδιοκτήτες ιστοτόπων και τους διαχειριστές είναι μια «αντίστροφη μνήμη cache proxy» που βρίσκεται ανάμεσα σε αιτήματα σελίδων που γίνονται από ένα πρόγραμμα περιήγησης ιστού και την εφαρμογή web. Ανιχνεύει αιτήματα και κάνει αντίγραφα σελίδων κατευθείαν από την κρυφή μνήμη, παρέχοντας έτσι μια αξιοσημείωτη ώθηση ταχύτητας.

Υπάρχουν πολλές σημαντικές επιλογές προσωρινής μνήμης proxy για αυτοεγκατάσταση ή ως "Λογισμικό ως Υπηρεσία". (Παραβλέπουμε τους παροχείς φιλοξενίας σε cloud που τυπικά συσκευάζουν όλα όσα μπορεί να χρειάζεστε σε μια αυτόνομη στοίβα ιστού).

Οι δημοφιλείς επιλογές προσωρινής μνήμης του proxy περιλαμβάνουν:

Οι επιλογές SaaS για προσωρινή αποθήκευση βρίσκονται γενικά στον κόσμο των δικτύων παροχής περιεχομένου (CDN), τα οποία αντί να τοποθετούν μια προσωρινή μνήμη μεταξύ ενός χρήστη και μιας στοίβας ιστού, εξυπηρετούν χρήστες σετ αποθηκευμένου περιεχομένου που βρίσκονται γεωγραφικά πλησιέστερα σε αυτά. Είναι μια λεπτή διαφορά, αλλά αυτή που για μεγάλους ιστότοπους με παγκόσμιο ακροατήριο μπορεί να κάνει μια σημαντική διαφορά.

Χρησιμοποιώντας βερνίκι

Βερνίκι είναι διαθέσιμο σε όλους τους διαχειριστές πακέτων Linux, ως εικόνα Docker και πολλές άλλες επιλογές, διαβάστε το σελίδα εγκατάστασης του έργου Για περισσότερες πληροφορίες.

Βασική διαμόρφωση βερνικιού

Το βερνίκι αποθηκεύει ένα προεπιλεγμένο αρχείο ρυθμίσεων είτε στο /usr/local/etc/varnish/default.vcl ή /etc/varnish/default.vcl , γραμμένο σε VCL (Γλώσσα διαμόρφωσης βερνικιού). Αυτό το αρχείο διαμόρφωσης γίνεται σύνταξη σε ένα μικρό πρόγραμμα μέσω ενός διερμηνέα C για να αυξήσει την ταχύτητα ακόμη περισσότερο.

Ανάλογα με τον τρόπο εγκατάστασης του Varnish, το αρχείο ρυθμίσεων θα φαίνεται ως εξής:

backend default {.host = "127.0.0.1";.port = "8000";}

Σε αυτό είναι απλούστερο, αυτό ορίζει το προεπιλεγμένο backend που χρησιμοποιείται από το Varnish, ορίζοντας τον κεντρικό υπολογιστή και τη θύρα που πρέπει να ακούσει και να παρεμποδίσει το περιεχόμενο.

Backend δημοσκόπηση

Ένα εύχρηστο χαρακτηριστικό του Varnish είναι ο έλεγχος σε προκαθορισμένα χρονικά διαστήματα εάν ένα backend είναι ακόμα υγιές. Ονομάζεται 'Backend Polling' και διαμορφώνεται προσθέτοντας μια ενότητα καθετήρα στη δήλωση backend:

.probe = {.url = '/';.timeout = 34ms;.interval = 1s;.window = 10;.threshold = 8;}

Οι παραπάνω είναι οι προεπιλεγμένες ρυθμίσεις που παρέχονται από το βερνίκι και το πείτε να επισκεφτεί ένα συγκεκριμένο .url κάθε παρεμβολή και αν για τουλάχιστον .threshold από τους .window ανιχνευτές, η url ανταποκρίνεται μέσα σε .timeout χιλιοστά του δευτερολέπτου, το backend εξακολουθεί να θεωρείται υγιές. Αφού θεωρηθεί ως «ανθυγιεινό», το περιεχόμενο εξυπηρετείται από την προσωρινή μνήμη για μια προκαθορισμένη περίοδο.

Ξεκινώντας βερνίκι

Θα καλύψουμε συγκεκριμένες αλλαγές στη διαμόρφωση των βερνικιών σε κάθε επιλογή πλατφόρμας, για να δούμε τώρα τις γενικές επιλογές.

Λιμάνια

Αρχικά, η θύρα για τον διακομιστή ιστού θα πρέπει να αλλάξει από την προεπιλογή. Για παράδειγμα, στη διαμόρφωση Apache Vhost αλλάξτε τη θύρα σε 81 ή 8080.

Ξεκινήστε το δαίμονα βερνικιού με την εντολή βερνίκι ή χρησιμοποιώντας ένα περιτύλιγμα υπηρεσίας. Ο δαίμονας έχει επιλογές σημαίας, οι πιο κοινές και χρήσιμες είναι οι εξής:

  • -f: Ορίζει τη διαδρομή προς το αρχείο διαμόρφωσης.
  • -s: Επιλογές αποθήκευσης προσωρινής αποθήκευσης. Η ρύθμιση αυτού σε RAM θα ​​προσφέρει ακόμα μεγαλύτερες αυξήσεις ταχύτητας.

Ο έλεγχος όλων λειτουργεί

Εκτελέστε την εντολή varnishstat ή επισκεφθείτε την isvarnishworking.com για να ελέγξετε ότι ο διακομιστής βερνικιών σας είναι έτοιμος και να ακούτε τα αιτήματα.

Τι να μην αποθηκεύει η μνήμη cache

Υπάρχουν ορισμένα μέρη ενός ιστότοπου που δεν θέλουμε να αποθηκεύσουμε στο cache, για παράδειγμα τις σελίδες διαχείρισης. Μπορούμε να τους εξαιρέσουμε δημιουργώντας μια υπορουτίνα vcl_recv στο αρχείο default.vcl που περιέχει μια εντολή if που καθορίζει τι δεν πρέπει να αποθηκεύει η μνήμη cache:

sub vcl_recv {# URI of admin folderif (req.url ~ "^/url/"){return (pass);}return(lookup);}

Αν χρησιμοποιείτε το Βερνίκι 4, τα πράγματα είναι ελαφρώς διαφορετικά, συμπεριλαμβανομένων των τιμών επιστροφής. Η συνάρτηση vcl_recv επιστρέφει τώρα την τιμή ahash αντί για μια αναζήτηση.

sub vcl_recv {...return(hash);}

Αυτό είναι επίσης το σημείο όπου θέτουμε τοποθεσίες ή υποτομείς που πρέπει να αγνοήσει το Varnish προσθέτοντας ένα req.http.host ~ 'example.com' στην εντολή if .

Μπισκότα

Από προεπιλογή, το Varnish δεν θα αποθηκεύσει προσωρινά το περιεχόμενο από το backend που ορίζει cookies. Ομοίως, αν ο πελάτης στείλει ένα cookie, θα παρακάμψει το βερνίκι κατευθείαν στο backend.

Τα cookie χρησιμοποιούνται συχνά από ιστότοπους για την παρακολούθηση της δραστηριότητας χρήστη και την αποθήκευση συγκεκριμένων τιμών χρήστη. Γενικά, αυτά τα cookies ενδιαφέρουν μόνο τον κωδικό πελάτη και δεν παρουσιάζουν ενδιαφέρον για το backend ή το βερνίκι. Μπορούμε να πούμε στο βερνίκι να αγνοεί τα cookies, εκτός από συγκεκριμένες περιοχές του ιστότοπου:

if ( !( req.url ~ ^/admin/) ) {unset req.http.Cookie;}

Αυτή η εντολή if αγνοεί τα cookies εκτός αν είμαστε στην περιοχή διαχείρισης του ιστότοπου, όπου η μετάδοση cookie μπορεί να είναι πιο χρήσιμη (εκτός αν θέλετε πραγματικά να εμποδίσετε τους διαχειριστές ιστότοπων).

Άλλες εξαιρέσεις

Με την προεπιλεγμένη εγκατάσταση, το βερνίκι επίσης δεν αποθηκεύει προσωρινά τις σελίδες που προστατεύονται με κωδικό πρόσβασης, τα αιτήματα GET και HEAD.

Τοποθέτηση βερνικιού για χρήση

Θα εξετάσουμε τώρα δύο τέλειες περιπτώσεις χρήσης για το βερνίκι: το Drupal και το Magento. Και τα δύο είναι εξαιρετικά δυναμικά συστήματα που επιτρέπουν στους μη τεχνικούς χρήστες να αναλάβουν μια μεγάλη ποικιλία πολύπλοκων εργασιών. Αυτό μπορεί να οδηγήσει σε φόρτωση σελίδας βάσης ερωτήσεων βάσης δεδομένων και σε περιοχές με απασχολησιμότητα, θα γίνει αισθητά αργή. Οι τυπικές σελίδες που έχουν δημιουργηθεί με αυτά τα συστήματα θα έχουν ένα μείγμα περιεχομένου ενημερωμένο σπάνια και συχνά.

Drupal

Το Drupal έχει προεπιλεγμένες επιλογές προσωρινής αποθήκευσης που εκτελούν παρόμοιες λειτουργίες με το βερνίκι, αλλά δεν θα παρέχουν την ευελιξία ή την αύξηση της ταχύτητας που απαιτούνται από μεγαλύτερους ή πιο περίπλοκους ιστότοπους.

Στον πραγματικό τρόπο Drupal υπάρχει a για το χειρισμό της ενσωμάτωσης βερνικιού για να αποθηκεύσετε ορισμένες από τις χειροκίνητες ρυθμίσεις που περιγράφονται παραπάνω.

Εγκαταστήστε τη μονάδα και σιγουρευτείτε ότι ακολουθείτε τις οδηγίες εγκατάστασης που περιλαμβάνονται στο αρχείο Readme της μονάδας.

Βεβαιωθείτε ότι το αρχείο / etc / default / βερνίκι έχει τις ακόλουθες επιλογές daemon (και η εσοχή είναι σημαντική):

DAEMON_OPTS="-a :80 -T localhost:6082 -f /etc/varnish/default.vcl -S /etc/varnish/secret -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,128M"

Βεβαιωθείτε ότι το Apache και οι σχετικοί εικονικοί κεντρικοί υπολογιστές ακούνε στη θύρα 8080 και όχι 80. Επανεκκινήστε και τις δύο υπηρεσίες μετά την πραγματοποίηση αυτών των αλλαγών.

Ενδέχεται να χρειαστεί να ορίσετε ένα "Κλειδί ελέγχου βερνικιού" στη σελίδα διαμόρφωσης μονάδας. Μάθετε τι είναι αυτό το κλειδί με τη γάτα / etc / βερνίκι / μυστική εντολή και επικολλήστε το στη σελίδα ρυθμίσεων. Επιλέξτε τη σωστή έκδοση βερνικιού, αποθηκεύστε τις ρυθμίσεις και θα δείτε μια σειρά από πράσινα τσιμπούρια στο κάτω μέρος της σελίδας.

Η ενότητα "Βερνίκι" αλληλεπιδρά με τις προεπιλεγμένες ρυθμίσεις προσωρινής μνήμης του Drupal, οπότε βεβαιωθείτε ότι έχετε ενεργοποιήσει και ρυθμίσει τις παραμέτρους για τη χρήση σας.

Εκτελέστε varnishstat από τη γραμμή εντολών, ξεκινήστε την πλοήγηση στον ιστότοπο ως ανώνυμο χρήστη και θα πρέπει να δείτε τα στατιστικά στοιχεία να αλλάζουν στην έξοδο εντολών.

Ένα από τα μονοπάτια που δεν θέλουμε να αποθηκεύουμε στο Drupal είναι οι σελίδες διαχειριστών, μπορούμε να το κάνουμε αυτό με μια υπορουτίνα vcl_recv :

sub vcl_recv {# URI of admin folderif (req.url ~ "^/admin/"){return (pass);}unset req.http.Cookie;return(lookup);}

Ίσως θελήσετε να μην εξετάσετε τις σελίδες χρήστη, τις σελίδες ενημέρωσης συστήματος και άλλες σελίδες που δημιουργούνται από εξαιρετικά δυναμικές μονάδες, όπως σημαία που χρησιμοποιούν εκτενώς το ajax για να λειτουργήσουν. Κάνετε αυτό προσθέτοντας περαιτέρω παραμέτρους req.url στη εντολή if .

Magento

Μια προεπιλεγμένη εγκατάσταση του Magento φέρει ένα εσωτερικό σύστημα προσωρινής αποθήκευσης που αποθηκεύει στατικές εκδόσεις των στοιχείων ιστότοπου σε έναν συγκεκριμένο φάκελο. Η σελίδα Σύστημα -> Διαχείριση προσωρινής μνήμης παρέχει μια επισκόπηση της τρέχουσας κατάστασης της προσωρινής μνήμης, καθώς και σας επιτρέπει να διαγράψετε όλες τις αποθηκευμένες προσωρινές μνήμες. Μπορείτε να διαγράψετε συγκεντρωτικά αρχεία CSS και JS και αυτόματα δημιουργούμενα αρχεία εικόνας από αυτήν τη σελίδα.

Η επικείμενη έκδοση 2 του Magento θα υποστηρίξει την προσωρινή αποθήκευση του βερνικιού από προεπιλογή, αλλά προς το παρόν πρέπει να χρησιμοποιήσουμε πρόσθετα τρίτων, συνιστώ Μονάδα τουρμπίνας . Βεβαιωθείτε ότι έχετε διαβάσει το το αρχείο readme του έργου καθώς σημειώνει κάποια επιπλέον βήματα ρύθμισης παραμέτρων, αγνοώντας τα μπορεί να σπάσει τον ιστότοπό σας.

Το module Turpentine είναι ιδιαίτερα διαμορφωμένο και θα κάνει τις απαραίτητες αλλαγές στα αρχεία vcl και το Configuration Varnish για εσάς. Ορισμένες επιλογές κλειδιών που πρέπει να ορίσετε είναι:

  • Υποστηριζόμενος κεντρικός υπολογιστής : Ο κεντρικός υπολογιστής βερνικιού, προεπιλεγμένος σε 127.0.0.1
  • Θύρα Backend : Η θύρα Varnish είναι ενεργοποιημένη, η προεπιλεγμένη τιμή είναι 80
  • Μαύρη λίστα διευθύνσεων URL : Μια λίστα διευθύνσεων URL που δεν αποθηκεύονται ποτέ στη μνήμη σε σχέση με τη ρίζα του Magento. Οι διευθύνσεις admin και API συμπεριλαμβάνονται αυτόματα.

Η ενότητα Turpentine συνδέεται με την προεπιλεγμένη μνήμη cache του Magento, οπότε η εκκαθάριση των κρουαζιερών στη σελίδα cache του βερνικιού θα καθαρίσει τις αντίστοιχες αποθηκευτικές μάζες.

Γενικές συμβουλές

Εκτός από τη χρήση βερνικιού με οποιοδήποτε από τα δυναμικά συστήματα παραπάνω, εδώ είναι μια σειρά από άλλες συμβουλές που θα βοηθήσουν την ικανότητα κρυφής μνήμης οποιασδήποτε τοποθεσίας.

Συνεπείς διευθύνσεις URL

Αν χρησιμοποιείτε το ίδιο περιεχόμενο σε διαφορετικά περιβάλλοντα, θα πρέπει να χρησιμοποιήσετε την ίδια διεύθυνση URL. Για παράδειγμα, μην συγχέουμε τη χρήση article.html , article.htm και άρθρου , αν και το CMS μπορεί να το επιτρέψει. Αυτό θα οδηγήσει σε τρεις διαφορετικές αποθηκευμένες εκδόσεις του ίδιου περιεχομένου.

Χρησιμοποιήστε τα cookies με φειδώ

Όπως είδαμε παραπάνω, τα cookies είναι δύσκολο να κρυφτούν και είναι σπάνια τόσο αναγκαία όσο νομίζουμε. Προσπαθήστε να περιορίσετε τη χρήση και τον αριθμό τους σε δυναμικές σελίδες.

Διαχείριση αρχείων

Η φόρτωση των στοιχείων του ιστότοπου μπορεί να είναι ένα από τα πιο χρονοβόρα μέρη της σελίδας και να υπάρχουν απλές συμβουλές για τη μείωση αυτού του φόρτου:

Η χρήση εικόνων CSS Image για εικονογραφία αντί για πολλά μικρά αρχεία έχει ως αποτέλεσμα λιγότερη κίνηση στο δίκτυο.

Η φιλοξενία βιβλιοθηκών CSS και JavaScript σημαίνει τοπικά λιγότερη κίνηση στο δίκτυο και μεγαλύτερο έλεγχο των στρατηγικών προσωρινής αποθήκευσης. Αυτό μπορεί να σημαίνει αύξηση των γενικών δαπανών συντήρησης για την ενημέρωση αυτών των στοιχείων ενεργητικού. Αποθηκεύστε αυτά τα στοιχεία σε σταθερά ονόματα φακέλων, ώστε οι αναφορές σε αυτά να είναι επίσης συνεπείς.

Γρήγορη προώθηση

Ελπίζω ότι αυτή η εισαγωγή στην επιτάχυνση των δυναμικών ιστότοπων σας με την προσωρινή αποθήκευση ήταν χρήσιμη. Το κέρδος απόδοσης αξίζει μια αρχική περίοδο διαμόρφωσης, πειραματισμού και μικροαλλαγές. Σε αυτή την εποχή σύντομης προσοχής και ανυπομονησίας, κάθε κέρδος ταχύτητας που μπορείτε να αποσυμπιέσετε από το set up σας θα κάνει τη διαφορά στους χρήστες και τον ανταγωνισμό σας.

Προτεινόμενη εικόνα, εικόνα cache δικτύου μέσω Shutterstock.