HTML5 Локальное хранилище против хранилища сессий - PullRequest
504 голосов
/ 02 апреля 2011

Кроме того, что оно не является постоянным и доступно только для текущего окна, есть ли какие-либо преимущества (производительность, доступ к данным и т. Д.) Для хранилища сеансов по сравнению с локальным хранилищем?

Ответы [ 10 ]

712 голосов
/ 02 апреля 2011

localStorage и sessionStorage оба расширяются Хранилище . Между ними нет никакой разницы, за исключением предполагаемого «непостоянства» sessionStorage.

То есть данные, хранящиеся в localStorage, сохраняются до явного удаления. Внесенные изменения сохраняются и доступны для всех текущих и будущих посещений сайта.

Для sessionStorage изменения доступны только для одной вкладки. Внесенные изменения сохраняются и доступны для текущей страницы на этой вкладке до тех пор, пока она не будет закрыта. После закрытия сохраненные данные удаляются.

148 голосов
/ 02 марта 2013

Единственное отличие состоит в том, что у localStorage другое время истечения, sessionStorage будет доступно только тогда, когда и в созданном окне оно открыто.
localStorage действует до тех пор, пока вы не удалите его или пользователь не удалит его.
Допустим, вы хотели сохранить имя пользователя и пароль для входа, которые вы хотели бы использовать sessionStorage над localStorage по соображениям безопасности (т. Е. Другое лицо, получающее доступ к своей учетной записи позднее).
Но если вы хотите сохранить настройки пользователя на его компьютере, вы, вероятно, захотите localStorage. Всего:

localStorage - использовать для длительного использования.
sessionStorage - используйте, когда вам нужно что-то изменить, или что-то временное

97 голосов
/ 06 февраля 2014

Несколько других моментов, которые могут быть полезны для понимания различий между локальным и сессионным хранилищем

  1. Как локальное хранилище, так и хранилище сеансов ограничены источником документа, поэтому

    https://mydomain.com/
    http://mydomain.com/
    https://mydomain.com:8080/

    Все приведенные выше URL будут не совместно использовать одно и то же хранилище. (Уведомление о пути веб-страницы не влияет на веб-хранилище)

  2. Хранение сеанса отличается даже для документа с одинаковой политикой происхождения, открытого на разных вкладках, поэтому одна и та же веб-страница, открытая на двух разных вкладках , не может совместно использовать одно хранилище .

  3. Как локальное хранилище, так и хранилище сеансов также ограничиваются поставщиками браузеров . Поэтому данные хранилища, сохраненные в IE, не могут быть прочитаны Chrome или FF.

Надеюсь, это поможет.

28 голосов
/ 26 июня 2015

Основное различие между localStorage и sessionStorage заключается в том, что sessionStorage является уникальным для каждой вкладки.Если вы закроете вкладку, sessionStorage будет удалено, localStorage - нет.Также вы не можете общаться между вкладками:)

Другое тонкое отличие состоит в том, что, например, в Safari (8.0.3) localStorage имеет ограничение в 2551 тыс. Символов, но sessionStorage имеет неограниченное хранилище

В Chrome (v43) ограничения localStorage и sessionStorage ограничены 5101 тыс. Символов (без разницы между обычным и частным режимом)

В Firefox * localStorage и sessionStorage ограничены 5120 k символов (нет разницы между обычным режимом / режимом инкогнито)

Нет разницы в скорости:)

Существует также проблема с Mobile Safari и Mobile Chrome, приватным режимом Safari иХром имеет максимальное пространство 0KB

12 голосов
/ 07 апреля 2013

sessionStorage - это то же самое, что и localStorage, за исключением того, что он сохраняет данные только для одного сеанса и будет удален, когда пользователь закроет окно браузера, в котором он был создан.

10 голосов
/ 02 апреля 2011

с точки зрения производительности, мои (грубые) измерения не обнаружили разницы на 1000 операций записи и чтения

с точки зрения безопасности, интуитивно может показаться, что localStore может быть закрыт до сессии sessionStore, но не имеет конкретных доказательств - может быть, кто-то другой делает?

функционально, согласованно с digitalFresh выше

6 голосов
/ 30 июля 2013

Я. Хранилище сеанса и локальное хранилище одинаковы по поведению, за исключением того, что хранилище локального хранилища будет хранить данные до тех пор, пока пользователь не удалит кеш, а файлы cookie и данные хранилища сеанса не сохранятся в системе, пока мы не закроем сеанс, т.е. пока мы не закроем окно, созданное для хранения сеанса.

5 голосов
/ 18 июня 2015

Преимущество хранилища сеансов перед локальным хранилищем, на мой взгляд, заключается в том, что оно имеет неограниченную емкость в Firefox и не будет сохраняться дольше, чем сеанс. (Конечно, это зависит от вашей цели.)

1 голос
/ 29 июня 2018

Локальное хранилище: Хранит данные пользовательской информации без даты истечения срока действия. Эти данные не будут удалены, когда пользователь закрыл окна браузера, они будут доступны для дня, недели, месяца и года.

//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

Хранение сеанса: Это то же самое, что и дата локального хранения, за исключением того, что все окна будут удалены, когда окна браузера закрыты веб-пользователем.

//set the value to a object in session storege
sessionStorage.myNameInSession = "Krishna";

Подробнее Нажмите

0 голосов
/ 19 ноября 2018
  • sessionStorage поддерживает отдельную область хранения для каждого данного источника, доступную на время сеанса страницы (пока браузер открыт, включая перезагрузку и восстановление страницы)

  • localStorage делает то же самое, но сохраняется даже при закрытии и повторном открытии браузера.

Я взял это у https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API

...