Η αποθήκευση από την πλευρά του πελάτη είναι απαραίτητη για τις εφαρμογές web. Μπορεί να μην είναι τόσο αλεξίσφαιρο όσο ο χώρος αποθήκευσης στον διακομιστή, αλλά, χωρίς αυτόν, οι εφαρμογές Ιστού δεν θα μπορούσαν να εφαρμόσουν πολλές σύγχρονες λειτουργίες. Όλα τα είδη των δυνατοτήτων εξαρτώνται από τον χώρο αποθήκευσης από την πλευρά του πελάτη, από περιόδους σύνδεσης σε παιχνίδια μέχρι καλάθια αγορών σε ιστότοπους ηλεκτρονικού εμπορίου.
Η αποθήκευση από την πλευρά του πελάτη επιτρέπει επίσης στις εφαρμογές Ιστού να εφαρμόσουν μια αρχιτεκτονική με επίκεντρο το απόρρητο. Μπορείτε να το χρησιμοποιήσετε για να διασφαλίσετε ότι τα ευαίσθητα δεδομένα δεν φεύγουν ποτέ από τη συσκευή ενός χρήστη.
Τι είναι η αποθήκευση από την πλευρά του πελάτη;
Στην ανάπτυξη Ιστού, η αποθήκευση από την πλευρά του πελάτη αναφέρεται στους διάφορους τρόπους με τους οποίους τα προγράμματα περιήγησης ιστού μπορούν να αποθηκεύσουν δεδομένα. Μια εφαρμογή μπορεί στη συνέχεια να χρησιμοποιήσει αυτά τα δεδομένα για να παρέχει λειτουργικότητα στους χρήστες. Η αποθήκευση από την πλευρά του πελάτη είναι κρίσιμη για ορισμένους λόγους:
- Τα δεδομένα που είναι αποθηκευμένα στον υπολογιστή-πελάτη είναι πολύ πιο γρήγορη στην πρόσβαση και η εφαρμογή σας μπορεί να έχει πρόσβαση σε αυτά χωρίς το Διαδίκτυο.
- Η αποθήκευση από την πλευρά του πελάτη διευκολύνει την εφαρμογή σας να θυμάται τις προτιμήσεις κάθε χρήστη.
- Η μόνιμη αποθήκευση ορισμένων δεδομένων στον πελάτη διευκολύνει την προστασία του απορρήτου των χρηστών.
- Η αποθήκευση όλων των δεδομένων της εφαρμογής στον διακομιστή είναι δαπανηρή, ειδικά σε μεγάλη κλίμακα.
Υπάρχουν πολλές διαφορετικές μορφές αποθήκευσης από την πλευρά του πελάτη που μπορείτε να χρησιμοποιήσετε στις εφαρμογές ιστού σας.
Μπισκότα
Ένα cookie προγράμματος περιήγησης είναι ένα κομμάτι δεδομένων κλειδιού/τιμής που αποθηκεύεται ως συμβολοσειρά στον υπολογιστή σας. Τα προγράμματα περιήγησης στέλνουν όλα τα cookies για έναν συγκεκριμένο ιστότοπο στον διακομιστή του ιστότοπου σε κάθε αίτημα. Τα cookies ήταν ο πρώτος (και για λίγο, ο μόνος) τύπος αποθήκευσης από την πλευρά του πελάτη.
Δεν υπάρχει επίσημο όριο για το μέγεθος ενός cookie, αλλά μεμονωμένα προγράμματα περιήγησης θέτουν διαφορετικά όρια στο μέγεθος και τον αριθμό των cookie που μπορείτε να ορίσετε. ο RFC 6265 Ενότητα 6.1 δηλώνει τις ακόλουθες ελάχιστες δυνατότητες cookie που πρέπει να παρέχουν τα προγράμματα περιήγησης (πράκτορες χρήστη):
Οι πρακτικές υλοποιήσεις παράγοντα χρήστη έχουν όρια στον αριθμό και το μέγεθος των cookies που μπορούν να αποθηκεύσουν. Οι πράκτορες χρηστών γενικής χρήσης ΠΡΕΠΕΙ να παρέχουν καθεμία από τις ακόλουθες ελάχιστες δυνατότητες:
- Τουλάχιστον 4096 byte ανά cookie (όπως μετράται με το άθροισμα του μήκους του ονόματος, της τιμής και των χαρακτηριστικών του cookie).
- Τουλάχιστον 50 cookies ανά τομέα.
- Τουλάχιστον 3000 cookies συνολικά.
Τα cookies μπορούν να παραμείνουν στο πρόγραμμα περιήγησης για ποικίλα χρονικά διαστήματα. Ορισμένες λήγουν στο τέλος μιας περιόδου σύνδεσης σελίδας και ορισμένες έχουν αυθαίρετες ημερομηνίες λήξης που μπορεί να εκτείνονται έως και μήνες στο μέλλον.
Τα προγράμματα περιήγησης δημιουργούν μια περίοδο λειτουργίας σελίδας όταν ανοίγετε μια νέα καρτέλα και τη τερματίζουν όταν κλείνετε την καρτέλα ή το πρόγραμμα περιήγησης. Εάν φορτώσετε ξανά ή ανανεώσετε τη σελίδα, το πρόγραμμα περιήγησης δεν θα τερματίσει την περίοδο λειτουργίας της σελίδας.
Θήκες χρήσης για cookies
Τα cookies είναι τα πλέον κατάλληλα για την αποθήκευση μικρών τμημάτων δεδομένων που ο διακομιστής χρειάζεται συχνά να διαβάζει ή να τροποποιεί. Γιατί;
- Τα cookies συνδέονται αυτόματα σε όλα τα αιτήματα δικτύου
- Τα cookies μπορούν να αποθηκεύσουν μόνο μικρές ποσότητες δεδομένων συμβολοσειράς.
Μπορείτε να χρησιμοποιήσετε cookies για να αναγνωρίσετε έναν χρήστη (όπως ένα αναγνωριστικό περιόδου σύνδεσης), να καταγράψετε μια επίσκεψη σελίδας για λόγους σελιδοδείκτη ή να αποθηκεύσετε την υψηλή βαθμολογία ενός παιχνιδιού.
LocalStorage
Όπως ένα cookie, το localStorage είναι ένας χώρος αποθήκευσης κλειδιών/τιμών που αποθηκεύει δεδομένα συμβολοσειράς. Ενώ και οι δύο τύποι αποθήκευσης είναι παρόμοιοι, το localStorage και τα cookies διαφέρουν με διάφορους τρόπους:
- Το LocalStorage εξαρτάται από τη JavaScript.
- Τα δεδομένα στο localStorage βρίσκονται κυρίως στο πρόγραμμα περιήγησης. Πρέπει να το στείλετε σκόπιμα στον διακομιστή, αντί να το στέλνει το πρόγραμμα περιήγησης σε κάθε αίτημα.
- Το LocalStorage δεν έχει ημερομηνία λήξης. Παραμένει στον πελάτη έως ότου ένας προγραμματιστής το διαγράψει με JavaScript ή ο χρήστης εκκαθαρίσει τον χώρο αποθήκευσης του προγράμματος περιήγησής του.
- Το LocalStorage έχει πολύ μεγαλύτερη χωρητικότητα αποθήκευσης. ο Προδιαγραφές WHATWG δεν προσδιορίζει ένα σκληρό όριο αλλά, σύμφωνα με Βικιπαίδεια, το ελάχιστο μέγεθος τοπικής αποθήκευσης μεταξύ των μεγάλων προγραμμάτων περιήγησης είναι 5 MB:
Τα προγράμματα περιήγησης περιορίζουν τα cookies στα 4 kilobyte. Η αποθήκευση Ιστού παρέχει πολύ μεγαλύτερη χωρητικότητα αποθήκευσης:
- Το Opera 10.50+ επιτρέπει 5 MB
- Το Safari 8 επιτρέπει 5 MB
- Ο Firefox 34 επιτρέπει 10 MB
- Το Google Chrome επιτρέπει 10 MB ανά προέλευση
- Ο Internet Explorer επιτρέπει 10 MB ανά περιοχή αποθήκευσης
Χρησιμοποιήστε τις θήκες για LocalStorage
Το LocalStorage είναι τέλειο για την αποθήκευση μεγάλου όγκου δεδομένων που σπάνια χρειάζεται να αναφέρει ο διακομιστής. Αυτό μπορεί να είναι οι ρυθμίσεις χρήστη μιας εφαρμογής, οι λεπτομέρειες διαμόρφωσης θέματος ή τα δεδομένα σε μια πρόσφατα συμπληρωμένη φόρμα. Αυτό συμβαίνει επειδή το localStorage έχει πολύ μεγαλύτερο όριο αποθήκευσης από τα cookies, αλλά πρέπει να καταβάλετε επιπλέον προσπάθεια για να στείλετε τα δεδομένα του στον διακομιστή.
Εάν αποθηκεύετε τα δεδομένα ως JSON, μπορείτε να αποθηκεύσετε αρκετά σύνθετα δεδομένα χρησιμοποιώντας την τοπική αποθήκευση, παρόλο που μπορεί να αποθηκεύσει μόνο συμβολοσειρές.
Το LocalStorage είναι ευάλωτο σε Επιθέσεις XSS, επομένως δεν πρέπει να αποθηκεύετε ευαίσθητα δεδομένα πελάτη σε αυτό.
SessionStorage
Το SessionStorage είναι ένα κατάστημα κλειδιών/τιμών που λειτουργεί σχεδόν το ίδιο με το localStorage, εκτός από ένα πράγμα. Τα αποθηκευμένα δεδομένα διατηρούνται μόνο για τη διάρκεια μιας περιόδου σύνδεσης σελίδας.
Χρησιμοποιήστε τις θήκες για SessionStorage
Μπορείτε να χρησιμοποιήσετε το SessionStorage για να αποθηκεύσετε τον ίδιο τύπο δεδομένων με το localStorage, αλλά μόνο όταν τα δεδομένα δεν χρειάζεται να διατηρηθούν πέρα από μια περίοδο λειτουργίας σελίδας.
IndexedDB
Το IndexedDB είναι ένα ισχυρό API προγράμματος περιήγησης για την αποθήκευση μεγάλων ποσοτήτων δομημένων δεδομένων. Είναι μια συναλλακτική, αντικειμενοστραφής βάση δεδομένων που αποθηκεύει δεδομένα σε ζεύγη κλειδιών/τιμών.
Εάν έχετε να κάνετε με μικρότερο όγκο δεδομένων, το localStorage/sessionStorage είναι η καλύτερη και ευκολότερη επιλογή. Δυστυχώς, περιορίζονται λόγω της χωρητικότητας αποθήκευσης και του γεγονότος ότι μπορούν να αποθηκεύσουν μόνο δεδομένα συμβολοσειράς. Το IndexedDB όχι μόνο επιτρέπει την αποθήκευση διαφορετικών τύπων δεδομένων, συμπεριλαμβανομένων αρχείων/δυαδικών δεδομένων, αλλά μπορεί επίσης να αποθηκεύσει πολύ περισσότερα δεδομένα. Το IndexedDB κατασκευάζει επίσης ευρετήρια των περιεχομένων του για γρήγορη αναζήτηση της βάσης δεδομένων.
Χρήση περιπτώσεων για το IndexedDB
Το IndexedDB είναι ουσιαστικά μια βάση δεδομένων NoSQL στο πρόγραμμα περιήγησης και μπορεί να αποθηκεύσει πολύ μεγάλες ποσότητες δεδομένων. Οποιαδήποτε περίπτωση χρήσης που απαιτεί αποθήκευση δεδομένων άνω των 10 MB είναι κατάλληλη για το IndexedDB.
Σε αντίθεση με τις άλλες μορφές αποθήκευσης του προγράμματος περιήγησης, το IndexedDB δεν περιορίζεται στην αποθήκευση συμβολοσειρών. Το IndexedDB μπορεί να αποθηκεύσει δεδομένα όλων των τυπικών τύπων JavaScript. Εάν δημιουργήσετε μια εφαρμογή Ιστού για να λειτουργεί κυρίως εκτός σύνδεσης, μπορείτε να χρησιμοποιήσετε το IndexedDB για να αποθηκεύσετε όλα τα δεδομένα της εφαρμογής.
Η αποθήκευση από την πλευρά του πελάτη είναι ευέλικτη και ισχυρή
Ο όρος αποθήκευση από την πλευρά του πελάτη αναφέρεται στην αποθήκευση δεδομένων εφαρμογής στο πρόγραμμα περιήγησης. Η αποθήκευση από την πλευρά του πελάτη είναι απαραίτητη για τη λειτουργία των περισσότερων σύγχρονων διαδικτυακών εφαρμογών. Υπάρχουν διάφοροι τύποι αποθήκευσης από την πλευρά του πελάτη: cookies, τοπική/sessionStorage και IndexedDB.
Όλοι οι τύποι αποθήκευσης του προγράμματος περιήγησης έχουν ποικίλα όρια ως προς τη χωρητικότητά τους και τον τύπο των δεδομένων που μπορούν να αποθηκεύσουν. Τα cookies είναι ο πιο περιορισμένος τύπος, το local/sessionStorage είναι το πιο βολικό και το IndexedDB είναι το πιο ισχυρό.