Czy są nietrwałe i obejmują jedynie bieżące okno, czy są jakieś korzyści (wydajność, dostęp do danych itp.) Przechowywanie sesji nad przechowywaniem lokalnym?
Czy są nietrwałe i obejmują jedynie bieżące okno, czy są jakieś korzyści (wydajność, dostęp do danych itp.) Przechowywanie sesji nad przechowywaniem lokalnym?
Odpowiedzi:
localStorage i sessionStorage rozszerzają pamięć . Nie ma między nimi żadnej różnicy, z wyjątkiem zamierzonego „nietrwałości” sessionStorage
.
Oznacza to, że dane przechowywane w są przechowywane localStorage
do momentu ich jawnego usunięcia . Wprowadzone zmiany są zapisywane i dostępne dla wszystkich bieżących i przyszłych wizyt w witrynie.
Dla sessionStorage
, zmiany są dostępne tylko na karcie. Dokonane zmiany są zapisywane i dostępne dla bieżącej strony na tej karcie, dopóki nie zostanie ona zamknięta. Po zamknięciu zapisane dane są usuwane.
Jedyną różnicą jest to, że localStorage ma inny czas wygaśnięcia, sessionStorage
będzie dostępny tylko wtedy, gdy okno, które go utworzyło, jest otwarte. localStorage
trwa do momentu jego usunięcia lub usunięcia przez użytkownika.
Powiedzmy, że chcesz zapisać nazwy użytkownika i hasła, co chcesz używać sessionStorage
na localStorage
ze względów bezpieczeństwa (np. Inna osoba dostępu do swojego konta w późniejszym czasie).
Ale gdybyś chciał zapisać ustawienia użytkownika na swoim komputerze, prawdopodobnie byś tego chciał localStorage
. W sumie:
localStorage
- stosowanie do długotrwałego użytkowania.
sessionStorage
- używaj, gdy musisz przechowywać coś, co się zmieni lub tymczasowe
Kilka innych punktów, które mogą pomóc zrozumieć różnice między pamięcią lokalną a sesją
Zarówno pamięć lokalna, jak i sesja mają zasięg dokumentacyjny, dlatego też
https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/
Wszystkie powyższe adresy URL nie będą dzielić tego samego miejsca. (Uwaga, ścieżka strony internetowej nie wpływa na pamięć internetową)
Pamięć sesji jest inna nawet dla dokumentu z tą samą zasadą pochodzenia otwartą na różnych kartach, więc ta sama strona internetowa otwarta na dwóch różnych kartach nie może współużytkować tej samej pamięci sesji.
Zarówno pamięć lokalna, jak i pamięć sesji są również określane przez dostawców przeglądarki . Dane pamięci zapisane przez IE nie mogą być odczytane przez Chrome ani FF.
Mam nadzieję że to pomoże.
Główna różnica między localStorage
i sessionStorage
polega na tym, że sessionStorage
jest unikalna dla każdej karty. Jeśli zamkniesz kartę, sessionStorage
zostanie ona usunięta,localStorage
nie . Nie można także komunikować się między kartami :)
Kolejna subtelna różnica polega na tym, że na przykład w Safari (8.0.3) localStorage
ma limit 2551 tys. Znaków, ale sessionStorage
ma nieograniczoną przestrzeń dyskową
Chrome (v43) oba localStorage
i sessionStorage
są ograniczone do 5101 znaków (k ma różnicy między normalnym trybie / incognito)
Na Firefox zarówno localStorage
i sessionStorage
są ograniczone do 5120 znaków (k żadnej różnicy pomiędzy normalnym / trybie prywatnym)
Bez różnicy prędkości :)
Występuje również problem z Mobile Safari i Mobile Chrome, maksymalne miejsce w Safari i Chrome w trybie prywatnym wynosi 0 KB
sessionStorage
jest taki sam localStorage
, z wyjątkiem tego, że przechowuje dane tylko dla jednej sesji i zostaną usunięte, gdy użytkownik zamknie okno przeglądarki, które je utworzyło.
jeśli chodzi o wydajność, moje (prymitywne) pomiary nie wykazały różnicy na 1000 zapisów i odczytów
ze względów bezpieczeństwa, intuicyjnie wydaje się, że localStore może zostać zamknięty przed sesją Store, ale nie ma konkretnych dowodów - może robi to ktoś inny?
jeśli chodzi o funkcjonalność, spójrz z digitalFresh powyżej
Pamięć sesji i pamięć lokalna zachowują się tak samo, z tą różnicą, że pamięć lokalna będzie przechowywać dane do momentu, aż użytkownik usunie pamięć podręczną i pliki cookie oraz dane pamięci sesji zostaną zachowane w systemie do momentu zamknięcia sesji, tj. Do czasu zamknięcia okno utworzone do przechowywania sesji.
Zaletą przechowywania sesji w porównaniu z przechowywaniem lokalnym jest, moim zdaniem, to, że ma on nieograniczoną pojemność w przeglądarce Firefox i nie będzie trwał dłużej niż sesja. (Oczywiście zależy to od celu.)
Lokalne przechowywanie: Przechowuje dane informacji o użytkowniku bez daty wygaśnięcia. Dane te nie zostaną usunięte, gdy użytkownik zamknie okna przeglądarki, będą dostępne przez dzień, tydzień, miesiąc i rok.
//Set the value in a local storage object
localStorage.setItem('name', myName);
//Get the value from storage object
localStorage.getItem('name');
//Delete the value from local storage object
localStorage.removeItem(name);//Delete specifice obeject from local storege
localStorage.clear();//Delete all from local storege
Przechowywanie sesji: To samo, co lokalna data przechowywania, z tym wyjątkiem, że usunie wszystkie okna, gdy okno przeglądarki zostanie zamknięte przez użytkownika sieci.
//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";
Czytaj więcej Kliknij
sessionStorage
utrzymuje osobny obszar przechowywania dla każdego podanego źródła, który jest dostępny przez czas trwania sesji strony (tak długo, jak przeglądarka jest otwarta, w tym ładuje strony i przywraca)
localStorage
robi to samo, ale utrzymuje się nawet po zamknięciu i ponownym otwarciu przeglądarki.
Wziąłem to z https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API