Κρυφή μνήμη στο ενισχυτή απόδοσης του BBC

Συγγραφέας: Laura McKinney
Ημερομηνία Δημιουργίας: 10 Απρίλιος 2021
Ημερομηνία Ενημέρωσης: 16 Ενδέχεται 2024
Anonim
Κρυφή μνήμη στο ενισχυτή απόδοσης του BBC - Δημιουργικός
Κρυφή μνήμη στο ενισχυτή απόδοσης του BBC - Δημιουργικός

Περιεχόμενο

Πέρυσι, κατά τη διάρκεια μιας δοκιμαστικής περιόδου χρήστη για την εφαρμογή BBC News, ένας από τους χρήστες έκανε ένα σχόλιο που έχει κολλήσει πραγματικά μαζί μου. Δηλώνουν: «Μου αρέσει να ρέω». Δεν νομίζω ότι υπάρχει καλύτερη περίληψη για το τι σημαίνει απόδοση για τους χρήστες μας. Σε μια γρήγορη εφαρμογή ή ιστότοπο, ο χρήστης μπορεί να μετακινηθεί, να αλληλεπιδράσει και να αλληλεπιδράσει με το περιεχόμενο.

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

Διαβάστε περισσότερα: Αναθεώρηση NordVPN

Κόψτε την απόσταση με προσωρινή μνήμη

Οι κρυφές μνήμες δημιουργούνται όταν μια μικρή ποσότητα κάτι αποθηκεύεται πιο κοντά στο σημείο που απαιτείται, συνήθως για να αποφευχθεί η επανεπεξεργασία. Για παράδειγμα, εάν τρώω Skittles, τείνω να ρίχνω μερικά στο χέρι μου και μετά να τρώω από εκεί. Στην πραγματικότητα, δημιουργώ μια κρυφή μνήμη Skittles στο χέρι μου, καθώς είναι πιο γρήγορο να τα φάω με αυτόν τον τρόπο από το να επιστρέψω στο πακέτο.


Το ίδιο μοτίβο χρησιμοποιείται στην τεχνολογία. Υπάρχουν τρεις κρυφές μνήμες που πρέπει να λάβουμε υπόψη:

  • Κρυφές μνήμες διακομιστή: Προσωρινά αποθηκευμένα δεδομένα στο διακομιστή, όπως τα αποτελέσματα των ερωτημάτων βάσης δεδομένων
  • Κρυφές μνήμες δικτύου: Οι προσωρινές μνήμες ενσωματωμένες στο δίκτυο, μερικές φορές από τον χειριστή της τοποθεσίας (γνωστές ως αντίστροφη προσωρινή μνήμη), αλλά πιο συχνά από ISP ή άλλους παρόχους δικτύωσης
  • Προσωρινή μνήμη προγράμματος περιήγησης: Το πρόγραμμα περιήγησης αποθηκεύει αρχεία στον σκληρό δίσκο του χρήστη για επαναχρησιμοποίηση από τον χρήστη

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

Σχεδιάστε λαμβάνοντας υπόψη την προσωρινή μνήμη

Για να είναι αποτελεσματικό, θέλουμε να χρησιμοποιήσουμε τα δεδομένα cache όσο το δυνατόν περισσότερο. Για να επεκτείνω την αναλογία Skittles, αν θέλω ένα μπλε Skittle αλλά δεν έχω μπλε Skittles στο χέρι μου (γνωστός και ως cache μου), θα πρέπει να επιστρέψω στο πακέτο. Αυτό είναι γνωστό ως «ποσοστό επιτυχίας». Είναι ένα "χτύπημα" όταν το στοιχείο βρίσκεται στην κρυφή μνήμη και ένα "χτύπημα" όταν δεν είναι. Θέλουμε υψηλό ποσοστό επιτυχίας, ώστε η προσωρινή μνήμη να καταλαμβάνει το μεγαλύτερο μέρος του φορτίου.


Μία από τις απλούστερες μεθόδους για την αύξηση του ποσοστού επίσκεψης είναι η μείωση της μεταβολής. Τεντώνοντας λίγο την αναλογία Skittles μου, φανταστείτε αν όλα τα Skittles ήταν κόκκινα. Με αυτόν τον τρόπο, κάθε Skittle στο χέρι μου θα ήταν μια κρυφή μνήμη. Δεν θα χρειαζόμουν ποτέ να επιστρέψω στο πακέτο. Εφαρμόζοντας αυτό στον ιστό, εάν μπορούμε να δώσουμε την ίδια σελίδα σε όσο το δυνατόν περισσότερους χρήστες, η προσωρινή μνήμη γίνεται πιο αποτελεσματική καθώς περισσότερα αιτήματα θα φτάσουν στην προσωρινή μνήμη.

Cache HTML για μικρό χρονικό διάστημα

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


Cache-Control: δημόσια, μέγιστη ηλικία = 30

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

Ρυθμίζοντας τη σελίδα σε "δημόσια", το πρόγραμμα περιήγησης του χρήστη (και οποιοδήποτε υλικό στην πορεία) θα διατηρήσει ένα αντίγραφο. Έτσι, η φόρτωση της πρώτης σελίδας θα υποβάλει ένα αίτημα, αλλά όλες οι φορτώσεις της σελίδας μετά από αυτό θα επαναχρησιμοποιήσουν την αρχική απόκριση, έως ότου επιτευχθεί το χρονικό όριο.

Η επίδραση του υλικού δικτύου στην πορεία μπορεί να είναι βαθιά. Πολλά μεγάλα δίκτυα (όπως ISP) θα έχουν κοινή μνήμη cache μεταξύ των χρηστών. Οι πάροχοι κινητής τηλεφωνίας χρησιμοποιούν επίσης αυτήν την τεχνική σε μεγάλο βαθμό - για παράδειγμα, για την προσωρινή αποθήκευση και τη συμπίεση εικόνων που προβάλλονται μέσω 3G. Οι διαχειριστές ιστότοπων μπορούν επίσης να τοποθετήσουν μια προσωρινή μνήμη HTTP μπροστά από την υπηρεσία τους. Αυτό κάναμε στο BBC.

Στατιστικά στοιχεία cache για ηλικίες

Μια τεχνική που χρησιμοποιούμε πολύ στο BBC είναι να αντιμετωπίζουμε στατικά στοιχεία (όπως εικόνες, CSS και σενάρια) διαφορετικά από τον τρόπο με τον οποίο χειριζόμαστε τις σελίδες. Η προσωρινή αποθήκευση σελίδων HTML μπορεί να οδηγήσει σε απώλεια ενημερώσεων περιεχομένου από χρήστες, αλλά μπορούμε να εκμεταλλευτούμε αυτήν τη συμπεριφορά όταν πρόκειται για στατικά στοιχεία.

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

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

Τελικές λέξεις

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

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

Θέλετε να μάθετε άλλους τρόπους για να δώσετε ώθηση στους ιστότοπούς σας;

Ο Jason Lengstorf είναι προγραμματιστής, σχεδιαστής, συγγραφέας και φιλική αρκούδα. Η εστίασή του είναι στην αποτελεσματικότητα και την απόδοση ανθρώπων, ομάδων και λογισμικού. Στην IBM, δημιουργεί διαδικασίες και συστήματα για να κάνει το σωστό πράγμα το εύκολο πράγμα ™. Σε όλες τις άλλες στιγμές, περιπλανιέται τη γη αναζητώντας νέα και καλύτερα σνακ.

Στο εργαστήριό του Σύγχρονες στρατηγικές και τεχνικές απόδοσης Front-End στο Δημιουργήστε τη Νέα Υόρκη από 25-27 Απριλίου 2018, Ο Jason θα δείξει στους παρευρισκόμενους πώς να βελτιώσουν τους αντιληπτούς χρόνους φόρτωσης - πόσο καιρό φαίνεται να χρειάζεται για τη φόρτωση μιας σελίδας - καθώς και τους πραγματικούς χρόνους φόρτωσης, χρησιμοποιώντας μόνο τεχνικές front-end, όπως:

  • Το μοτίβο φόρτωσης σκελετού
  • Καλύτερη φόρτωση για στατικά στοιχεία
  • Τεμπέλη φόρτωση
  • Εργαζόμενοι υπηρεσιών
  • Καλύτερες διαδικασίες κατασκευής και πολλά άλλα!

Το Generate New York πραγματοποιείται από τις 25 έως τις 27 Απριλίου 2018. Λάβετε το εισιτήριό σας τώρα.

Δημοφιλή Στην Πύλη
Σχεδίαση υπηρεσιών με τις οποίες ερωτεύονται οι άνθρωποι
Περαιτέρω

Σχεδίαση υπηρεσιών με τις οποίες ερωτεύονται οι άνθρωποι

Μια τροποποιημένη έκδοση αυτού του άρθρου εμφανίστηκε για πρώτη φορά στο τεύχος 234 του περιοδικού .net - το περιοδικό με τις μεγαλύτερες πωλήσεις στον κόσμο για σχεδιαστές και προγραμματιστές ιστοσελ...
Μεγάλη ερώτηση: πώς αντιμετωπίζετε το άγχος;
Περαιτέρω

Μεγάλη ερώτηση: πώς αντιμετωπίζετε το άγχος;

Ρέιτσελ Σίλκοκ Ανεξάρτητος σχεδιαστής ιστοσελίδωνwww.rachil.li Τόπος αγώνων! Είμαι ένα άτομο που νιώθει πιο χαρούμενος όταν έχω μια λίστα εργασιών που πρέπει να ολοκληρώσω. Αυτό που λειτουργεί καλύτερ...
Τι ώρα πρέπει να ξυπνήσουν οι σχεδιαστές το πρωί;
Περαιτέρω

Τι ώρα πρέπει να ξυπνήσουν οι σχεδιαστές το πρωί;

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