Προγραμματισμός

Βέλτιστες πρακτικές στην προσωρινή αποθήκευση στο ASP.Net

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

Η προσωρινή αποθήκευση στο ASP.Net είναι των ακόλουθων τριών τύπων:

  1. προσωρινή αποθήκευση εξόδου σελίδας
  2. προσωρινή αποθήκευση τμήματος σελίδας
  3. προσωρινή αποθήκευση δεδομένων

Προσωρινή αποθήκευση εξόδου σελίδας

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

Η επιλογή VaryByParam σάς βοηθά να καθορίσετε τις μεταβλητές στο Http Request που θα χρειαστούν μια νέα καταχώριση προσωρινής μνήμης. Άλλες πιθανές επιλογές περιλαμβάνουν: VaryByHeader και VaryByCustom. Μπορείτε επίσης να καθορίσετε τη θέση και τη διάρκεια στην οδηγία OutputCache - μπορείτε να τις χρησιμοποιήσετε για να καθορίσετε τη θέση της προσωρινής μνήμης και επίσης τη διάρκεια για την οποία η ιστοσελίδα θα πρέπει να αποθηκευτεί προσωρινά στην κρυφή μνήμη.

Προσωρινή αποθήκευση τμήματος σελίδας

Η προσωρινή αποθήκευση τμήματος σελίδας είναι μια στρατηγική προσωρινής αποθήκευσης στην οποία η ιστοσελίδα προσωρινά αποθηκεύεται προσωρινά - μόνο τα τμήματα της ιστοσελίδας αποθηκεύονται προσωρινά, όχι ολόκληρη η ιστοσελίδα. Μπορείτε να χρησιμοποιήσετε την ίδια σύνταξη με την προσωρινή αποθήκευση εξόδου σελίδας. Ωστόσο, πρέπει να εφαρμόσετε το χαρακτηριστικό OutputCache σε ένα στοιχείο ελέγχου χρήστη αντί για την ιστοσελίδα. Το Frachment caching είναι χρήσιμο όταν θα χρειαζόταν να αποθηκεύσετε προσωρινά μόνο τμήματα της ιστοσελίδας σας - συνήθως σε περιπτώσεις όπου η ιστοσελίδα σας περιέχει ένα συνδυασμό κοινών και δυναμικών ενοτήτων. Για παράδειγμα, μπορείτε να έχετε μια ιστοσελίδα που περιέχει ένα συνδυασμό στοιχείων μενού και επίσης ορισμένες δυναμικές ενότητες που πρέπει να συμπληρώνονται και να ενημερώνονται συχνά από τη βάση δεδομένων.

Προσωρινή αποθήκευση δεδομένων

Το ASP.Net εκθέτει το Cache API για να αποθηκεύσετε δεδομένα στην προσωρινή μνήμη για ανάκτηση αργότερα. Η σύνταξη για την αποθήκευση δεδομένων στην προσωρινή μνήμη χρησιμοποιώντας το Cache API δίνεται παρακάτω.

Cache ["key"] = "τιμή";

Μπορείτε επίσης να χρησιμοποιήσετε τις μεθόδους Προσθήκη ή Εισαγωγή. Για απομακρυσμένη καταχώριση από την προσωρινή μνήμη, μπορείτε να χρησιμοποιήσετε τη μέθοδο Κατάργηση () της κλάσης Cache. Η μέθοδος Insert () της κλάσης Cache σάς επιτρέπει να καθορίσετε την εξάρτηση cache. Η εξάρτηση προσωρινής μνήμης είναι μια στρατηγική που διασφαλίζει ότι όταν αλλάζουν τα δεδομένα στο χώρο αποθήκευσης δεδομένων (από το οποίο έχει συμπληρωθεί η προσωρινή μνήμη), τότε η προσωρινή μνήμη θα συμπληρωθεί ξανά αμέσως. Όταν αλλάξουν τα δεδομένα στο χώρο αποθήκευσης δεδομένων, η προσωρινή μνήμη θα λήξει, με αποτέλεσμα να συμπληρωθεί εκ νέου η προσωρινή μνήμη με τα πιο πρόσφατα δεδομένα. Μπορείτε να διαβάσετε περισσότερα σχετικά με αυτό από αυτό το άρθρο MSDN.

Βέλτιστες πρακτικές

Θα πρέπει να αποθηκεύσετε προσωρινά την κρυφή μνήμη όσο μπορείτε και να αποθηκεύσετε προσωρινά τα δεδομένα σε κάθε επίπεδο της εφαρμογής σας. Κατά τη χρήση της προσωρινής αποθήκευσης δεδομένων, θα πρέπει να εφαρμόσετε μια σωστή στρατηγική για να διασφαλίσετε ότι τα δεδομένα στην προσωρινή μνήμη είναι συγχρονισμένα με αυτά στην αποθήκευση δεδομένων. Μπορείτε να εκμεταλλευτείτε τους κατανεμημένους διαχειριστές προσωρινής μνήμης, όπως το Memcached, έτσι ώστε η στρατηγική προσωρινής αποθήκευσης να μπορεί επίσης να κλιμακωθεί καλά και να προσφέρει σημαντικά κέρδη απόδοσης - μπορείτε να χρησιμοποιήσετε το Memcached για να αποθηκεύσετε μεγάλα δεδομένα. Πρέπει να βεβαιωθείτε ότι αποθηκεύετε προσωρινά προσωρινά δεδομένα μόνο - δεν υπάρχει νόημα στην προσωρινή αποθήκευση δεδομένων που θα άλλαζαν συχνά με την πάροδο του χρόνου. Επίσης, τα δεδομένα που είναι απίθανο να επαναχρησιμοποιηθούν δεν πρέπει να αποθηκεύονται στην προσωρινή μνήμη. Δεν πρέπει να χρησιμοποιείτε υπερβολικά το SqlDependency ή το SqlCacheDependency.

Και τώρα, ας γνωρίσουμε και τα μειονεκτήματα της προσωρινής αποθήκευσης. Το αντικείμενο προσωρινής μνήμης είναι διαθέσιμο μόνο στον τρέχοντα τομέα εφαρμογής. Επομένως, εάν θέλετε να αποθηκεύσετε δεδομένα στην κρυφή μνήμη και να τα προσπελάσετε σε ένα αγρόκτημα ιστού, αυτό δεν είναι πιθανό. Θα πρέπει να αξιοποιήσετε την κατανεμημένη προσωρινή μνήμη, όπως το Windows Server AppFabric Caching ή άλλα κατανεμημένα πλαίσια προσωρινής αποθήκευσης για να έχετε τα δεδομένα στην προσωρινή μνήμη παγκόσμια προσβάσιμα σε ένα σύμπλεγμα Web.

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