HTML5 Local storage vs. Session storage
Poza tym, że nie jest trwały i ma zasięg tylko do bieżącego okna, czy są jakieś korzyści (wydajność, dostęp do danych itp.) z przechowywania sesji nad pamięcią lokalną?
11 answers
LocalStorage i sessionStorage obie rozszerzają Storage. Nie ma żadnej różnicy między nimi, z wyjątkiem zamierzonego "braku trwałości" sessionStorage
.
Czyli dane przechowywane w localStorage
trwa do momentu wyraźnego usunięcia . Wprowadzone zmiany są zapisywane i dostępne dla wszystkich obecnych i przyszłych wizyt na stronie.
Dla sessionStorage
, zmiany są dostępne tylko na karcie. wprowadzone zmiany są zapisywane i dostępne dla bieżącej strony w tym tab dopóki nie zostanie zamknięta. Po jego zamknięciu przechowywane dane są usuwane.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-31 02:56:16
Jedyną różnicą jest to, że localStorage ma inny czas wygaśnięcia, sessionStorage
będzie dostępny tylko wtedy, gdy i przez okno, które go utworzyło, jest otwarte. localStorage
trwa do momentu usunięcia go lub usunięcia przez użytkownika.
Powiedzmy, że chcesz zapisać nazwę użytkownika i hasło, które chcesz użyć sessionStorage
nad localStorage
ze względów bezpieczeństwa (np. inna osoba uzyskująca dostęp do swojego konta w późniejszym czasie).
ale jeśli chcesz zapisać ustawienia użytkownika na jego komputerze, prawdopodobnie want localStorage
. W sumie:
localStorage
- stosować do długotrwałego stosowania.sessionStorage
- Używaj, gdy musisz przechowywać coś, co się zmienia lub coś tymczasowego
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-22 22:24:01
Kilka innych punktów, które mogą być pomocne w zrozumieniu różnic między przechowywaniem lokalnym a sesyjnym
-
Zarówno magazyn lokalny, jak i magazyn sesyjny są ustawione na document origin, więc
Https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/Wszystkie powyższe adresy URL nie Udostępnij ten sam magazyn. (Uwaga ścieżka strony nie wpływa na www storage)
Przechowywanie sesji jest inne nawet dla dokumentu z tą samą Polityką pochodzenia otwartą w różnych kartach, więc ta sama strona internetowa otwarta w dwóch różnych kartach nie można Udostępnij ten sam magazyn sesji.
Zarówno pamięć lokalna, jak i sesyjna są również objęte zakresem dostawcy przeglądarek. Tak więc dane zapisane przez IE nie mogą być odczytywane przez Chrome lub FF.
Mam nadzieję, że to pomoże.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-06 17:22:47
Główna różnica między localStorage
i sessionStorage
jest taka, że sessionStorage
jest unikalna na kartę. Jeśli zamkniesz kartę, {[1] } zostanie usunięta, localStorage
nie. Również nie można komunikować się między zakładkami:)
Kolejną subtelną różnicą jest to, że na przykład w Safari (8.0.3) localStorage
ma limit 2551 znaków k, ale sessionStorage
ma nieograniczoną pamięć
localStorage
, jak i sessionStorage
są ograniczone do 5101 znaków k (bez różnicy między trybem normalnym / incognito)
On Firefox zarówno localStorage
, jak i sessionStorage
są ograniczone do 5120 znaków k (bez różnicy między trybem normalnym / prywatnym)
Żadnej różnicy w prędkości:)
W przypadku wersji mobilnej Safari i Chrome występuje również problem, Tryb prywatny Safari i Chrome mają maksymalną przestrzeń 0KB.]}Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-01-22 22:06:51
sessionStorage
jest tym samym co localStorage
, z tą różnicą, że przechowuje dane tylko dla jednej sesji i zostanie usunięta, gdy użytkownik zamknie okno przeglądarki, które je utworzyło.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-04-17 09:29:06
Wydajność, moje (surowe) pomiary nie znalazły różnicy na 1000 zapisów i odczytów
Bezpieczeństwo mądrze, intuicyjnie wydaje się, że localStore może być zamknięty przed sessionStore, ale nie ma konkretnych dowodów - może ktoś inny to robi?
Funkcjonalny mądry, zgodny z digitalFresh powyżej
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-04-02 12:36:32
Ya session storage i local storage są takie same w zachowaniu z tym, że jest to local storage będzie przechowywać dane do czasu i chyba użytkownik usunie pamięć podręczną, a Pliki cookie i dane przechowywania sesji będą przechowywane w systemie do czasu zamknięcia sesji i, E, aż zamkniemy utworzone okno przechowywania sesji.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-30 09:28:14
Zaletą pamięci masowej sesji nad pamięcią lokalną, moim zdaniem, jest to, że ma nieograniczoną pojemność w Firefoksie i nie będzie trwać dłużej niż sesja. (Oczywiście zależy to od tego, jaki jest twój cel.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-20 15:06:48
Local storage: przechowuje dane o Użytkowniku bez daty wygaśnięcia te dane nie zostaną usunięte, gdy użytkownik zamknie okna przeglądarki, będą dostępne dla dnia, tygodnia, miesiąca i roku.
//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: jest to tak samo jak data przechowywania lokalnego, z tym że usunie wszystkie okna, gdy okna przeglądarki zostaną zamknięte przez użytkownika sieci.
//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";
Czytaj Więcej Kliknij
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-29 19:49:58
sessionStorage
utrzymuje oddzielny obszar pamięci dla każdego miejsca pochodzenia, który jest dostępny przez czas trwania sesji strony (tak długo, jak przeglądarka jest otwarta, w tym przeładowuje i przywraca Stronę)
localStorage
robi to samo, ale utrzymuje się nawet po zamknięciu i ponownym otwarciu przeglądarki.
Wziąłem to od Web Storage API
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-11 10:18:23
Późna odpowiedź, ale czułem, że dodam tu kilka punktów.
Pamięć sesji będzie dostępna dla konkretnej karty, gdzie możemy korzystać z pamięci lokalnej za pośrednictwem przeglądarki. Oba są domyślnie tego samego pochodzenia i możemy również przechowywać wartości ręcznie za pomocą par key, value (Wartość musi być string).
Po zamknięciu zakładki (sesji) przeglądarki następuje Przechowywanie sesjizostaną rozliczone na tej zakładce, gdzie podobnie jak w przypadku lokalnego przechowywania musimy Wyczyść to. jawnie. Maksymalny limit przechowywania odpowiednio 5MB
i 10MB
.
Możemy zapisać i pobrać dane jak poniżej,
Aby Zapisać:
sessionStorage.setItem('id', noOfClicks); // localStorage.setItem('id', noOfClicks);
sessionStorage.setItem('userDetails', JSON.stringify(userDetails)); // if it's object
Aby Uzyskać:
sessionStorage.getItem('id'); // localStorage.getItem('id');
User user = JSON.parse(sessionStorage.getItem("userDetails")) as User; // if it's object
Do Modyfikacji:
sessionStorage.removeItem('id'); // localStorage.removeItem('id');
sessionStorage.clear(); // localStorage.clear();
P. S: getItem()
również zwracają dane jako ciąg znaków i my need convert it do formatu JSON , aby uzyskać dostęp, jeśli jest to obiekt.
Możesz przeczytać więcej o magazynach przeglądarek proszę..
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2021-01-10 16:09:32