Sobes.tech
Junior

Εξηγήστε τη διαφορά μεταξύ cookies, sessionStorage και localStorage.

sobes.tech AI

Απάντηση από AI

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

  • Cookies: Μικρά τμήματα δεδομένων που αποστέλλονται από τον διακομιστή ιστού και αποθηκεύονται στον περιηγητή του χρήστη. Αποστέλλονται με κάθε επόμενη αίτηση στον ίδιο διακομιστή. Χρησιμοποιούνται για αυθεντικοποίηση, αποθήκευση προτιμήσεων χρήστη, παρακολούθηση της κατάστασης του καλαθιού αγορών.

    • Διάρκεια ζωής: Ορίζεται κατά τη δημιουργία (μπορεί να είναι συνεδρίας ή με συγκεκριμένη ημερομηνία λήξης).
    • Όγκος: Περιορισμένος, συνήθως μερικά κιλομπάιτ (περίπου 4 KB).
  • sessionStorage: Αποθηκεύει δεδομένα μόνο για μια συνεδρία περιηγητή (ανοιχτή καρτέλα ή παράθυρο). Τα δεδομένα διαγράφονται κατά το κλείσιμο της καρτέλας ή του παραθύρου.

    • Διάρκεια ζωής: Μέχρι το κλείσιμο της καρτέλας ή του παραθύρου.
    • Όγκος: Σημαντικά μεγαλύτερος από τα cookies (συνήθως μερικά megabytes).
  • localStorage: Αποθηκεύει δεδομένα χωρίς ημερομηνία λήξης, μέχρι να διαγραφούν ρητά από τον χρήστη ή το σενάριο. Διαθέσιμο σε όλες τις καρτέλες και παράθυρα του ίδιου τομέα.

    • Διάρκεια ζωής: Αόριστη (μέχρι να διαγραφεί ρητά).
    • Όγκος: Σημαντικά μεγαλύτερος από τα cookies (συνήθως μερικά megabytes).

Ακολουθεί μια σύντομη σύγκριση:

Μηχανισμός Διάρκεια ζωής Διαθεσιμότητα Αποστέλλεται στον διακομιστή Όγκος (τυπικός) Σκοπός
Cookies Συνεδρίας ή με λήξη Μέσω επικεφαλίδων HTTP Ναι ~4 KB Αυθεντικοποίηση, παρακολούθηση, προτιμήσεις
sessionStorage Μέχρι το κλείσιμο καρτέλας/παραθύρου Μέσω API JS Όχι ~5-10 MB Προσωρινή αποθήκευση δεδομένων συνεδρίας
localStorage Αόριστη (μέχρι διαγραφή) Μέσω API JS Όχι ~5-10 MB Μακροπρόθεσμη αποθήκευση δεδομένων

Παραδείγματα χρήσης με API JavaScript:

// Cookies (πρόσβαση μέσω document.cookie, απαιτεί χειροκίνητο parsing και serialization)
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// sessionStorage
sessionStorage.setItem('id', '123');
let userId = sessionStorage.getItem('id');
sessionStorage.removeItem('id');

// localStorage
localStorage.setItem('theme', 'dark');
let userTheme = localStorage.getItem('theme');
localStorage.removeItem('theme');
localStorage.clear(); // Διαγράφει όλα τα δεδομένα στο localStorage