Sesja i pamięć lokalna to metody przechowywania przeglądarki, które umożliwiają przechowywanie danych wraz z bezstanowymi żądaniami HTTP. Stanowią alternatywę dla przechowywania opartego na plikach cookie i mają wiele zastosowań w tworzeniu stron internetowych.
Chociaż działają w bardzo podobny sposób, istnieją znaczne różnice, o których powinieneś wiedzieć.
Pamięć lokalna i pamięć sesji: jakie są ich zastosowania?
Pamięć lokalna i sesyjna to interfejsy API JavaScript, których można używać do przechowywania danych po stronie klienta. Pozwalają stronie internetowej na przechowywanie danych w przeglądarce i instruują przeglądarkę, aby miała do nich później dostęp.
W zależności od potrzeb do przechowywania danych można użyć pamięci lokalnej lub sesyjnej. Obie metody przechowywania są podobne do plików cookie, ale bez ta sama prywatność dotyczy plików cookie. Dlatego większość nowoczesnych stron internetowych woli korzystać wyłącznie z metod przechowywania w sieci lub łączyć je z plikami cookie jako rozwiązanie awaryjne.
W przeciwieństwie do plików cookie, przechowywanie lokalne i przechowywanie sesji nie wysyłają danych do serwera za pośrednictwem nagłówków HTTP. Należy ich używać wyłącznie do funkcji po stronie klienta.
Ponadto magazyn lokalny i sesyjny mają limit przechowywania wynoszący około 5 MB na domenę. Zapewniają więcej miejsca niż pliki cookie, które mają pojemność tylko 4 KiB na plik cookie.
Co to jest pamięć sesji?
Sesja przeglądania przybliża korzystanie z witryny. Jeśli odwiedzasz witrynę, przeglądasz trochę, a następnie wyłączasz komputer, możesz myśleć o tym czasie jako o pojedynczej sesji. Konfiguracja Twojej przeglądarki może to zmienić w subtelny sposób, ale sesja ma na celu reprezentowanie fragmentu czasu interakcji z witryną.
Przechowywanie sesji jest unikalne dla każdej karty przeglądarki. Jeśli otworzysz nową kartę i przejdziesz do tej samej witryny, rozpoczniesz nową sesję z własnym miejscem do przechowywania. Jeśli jednak korzystasz z funkcji „duplikatów karty” w swojej przeglądarce, może ona ponownie wykorzystać tę samą sesję. Nie można zbytnio polegać na konkretnych szczegółach „sesji”. Zamiast tego skup się na podstawowej koncepcji: przechowywanie sesji jest tymczasowe.
Magazyn sesji ma wbudowane metody API do pracy z danymi pary klucz/wartość. Możesz przechowywać dane z JavaScript jak tak:
sessionStorage.setItem("klucz", "wartość");
Aby odzyskać zapamiętaną wartość:
sessionStorage.getItem("klucz");
Zauważ, że oba klucz oraz wartość są tylko typami łańcuchowymi. Jeśli chcesz przechowywać inny typ, musisz przekonwertować go na ciąg, jawnie lub niejawnie.
Co to jest pamięć lokalna?
Pamięć lokalna przechowuje dane we wszystkich wystąpieniach witryny, niezależnie od tego, czy znajdują się one na różnych kartach, czy w oknach. Jest również trwały, więc dane nie znikną po zamknięciu przeglądarki.
Gdy otworzysz witrynę internetową, która wcześniej korzystała z pamięci lokalnej, zawsze będzie miała ona dostęp do przechowywanych danych.
Jako programista stron internetowych możesz użyć tego mechanizmu do przechowywania danych o użytkowniku. Niektóre strony internetowe mogą to wykorzystać, aby pozostać zalogowanym lub zapewnić bardziej spersonalizowaną obsługę.
Podobnie jak w przypadku przechowywania sesji, lokalny obiekt pamięci masowej można ustawić za pomocą jednego wiersza kodu JavaScript:
localStorage.setItem("klucz", "wartość");
Aby uzyskać dostęp do wartości klucza:
localStorage.getItem("klucz");
Zauważ, że te metody działają w taki sam sposób, jak przechowywanie sesji, po prostu używają innego typu magazynu danych.
Podczas gdy pamięć sesji czyści dane zaraz po zakończeniu sesji, jedynym sposobem na wyczyszczenie pamięci lokalnej jest jej jawne usunięcie. Oba typy pamięci masowej oferują dwie metody czyszczenia danych. Pierwszy usuwa określony element danych na podstawie jego klucza:
localStorage.removeItem("klucz");
Możesz również usunąć wszystkie dane przechowywane przez Twoją witrynę, niezależnie od jej klucza:
localStorage.clear();
Więcej informacji o tych metodach interfejsu API przechowywania danych w sieci Web znajdziesz na javascript.info stronie internetowej.
Kiedy potrzebujesz lokalnej pamięci masowej?
Ponieważ pamięć lokalna jest stała, najlepiej jest zachować dane podczas wizyt użytkowników. Jeśli chcesz przechowywać preferencje witryny lub buforować dane długoterminowe, odpowiednia jest pamięć lokalna. Możesz nie chcieć przechowywać bardziej poufnych danych w pamięci lokalnej, ponieważ jest to trwałe.
Ponieważ przechowywanie lokalne i sesyjne są metodami frontonu, możesz chcieć uniknąć ich używania do funkcji opartych na serwerze, takich jak logowanie użytkownika. W takich przypadkach możesz rozważyć pliki cookie jako alternatywę.
Kiedy potrzebujesz pamięci sesyjnej?
Jeśli chcesz przechowywać dane tylko podczas interakcji użytkownika z Twoją witryną, przechowywanie sesji jest idealne. Może to dotyczyć krótkoterminowego przechowywania w pamięci podręcznej lub danych o użytkowaniu związanych z określoną wizytą w Twojej witrynie.
Przechowywanie sesji jest lepsze do przechowywania bardziej poufnych informacji, ponieważ wygasa.
Pamięć lokalna a Pamięć sesji: co jest bezpieczniejsze?
Jak widać, lokalne i sesyjne metody przechowywania są podobne pod wieloma względami, ale nadal mają dostosowane przypadki użycia. Nie powinieneś brać pod uwagę ani bezpiecznych, ponieważ są to technologie front-end, do których JavaScript ma dostęp. Jednak przechowywanie sesji jest bardzo wygodne, a jego tymczasowy charakter uspokaja.
Pamięć lokalna jest trwała, więc może stwarzać dodatkowe problemy z bezpieczeństwem. Każdy, kto otworzy przeglądarkę, może teoretycznie uzyskać dostęp do pamięci lokalnej. Powinieneś być świadomy jak działają ataki XSS i jak im zapobiegać.
Pamięć lokalna lub pamięć sesyjna: której należy użyć?
Przechowywanie sesji jest nieco bezpieczniejsze ze względu na swój tymczasowy charakter. Wybór metody przechowywania w sieci zależy jednak od Twoich wymagań. Magazyn JavaScript jest najbardziej odpowiedni tylko do użytku po stronie klienta. Ale oferuje wygodny magazyn danych oparty na przeglądarce i jest bardzo łatwy w użyciu.
Pamiętaj, że podczas gdy pamięć lokalna przechowuje dane na kilku kartach, przechowywanie sesji jest w większości przypadków unikalne dla każdej karty. Powinieneś upewnić się, że Twoja aplikacja przyjmuje jak najmniej założeń i obsługuje przypadki skrajne.
Pliki cookie to starsza forma utrwalania danych, ale nadal są bardzo używane. Możesz je sprawdzić pod kątem danych, które musisz przesłać na serwer.