HTML5 Локальное хранилище против хранилища сессий

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

13 ответов

Решение

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

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

За sessionStorageИзменения доступны только для каждого окна (или вкладки в браузерах, таких как Chrome и Firefox). Внесенные изменения сохраняются и доступны для текущей страницы, а также для будущих посещений сайта в том же окне. После закрытия окна хранилище удаляется.

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

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

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

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

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

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

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

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

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

Основное различие между 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 и Chrome имеют максимальный размер 0 КБ.

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

Локальное хранилище может хранить до 10 МБ автономных данных (в chrome 10 МБ, в других браузерах 5 МБ), в то время как хранилище сеансов может хранить до 5 МБ данных. Но куки могут хранить только 4 КБ текстовых данных. Подробнее смотрите здесь

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

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

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

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

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

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

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

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

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

Поздний ответ, но я решил добавить здесь несколько моментов.

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

После закрытия вкладки (сеанса) браузера хранилище сеансов будет очищено на этой вкладке, где, как и в случае с локальным хранилищем, нам необходимо очистить его явно . Максимальный лимит хранения соответственно 5MBи 10MB.

Мы можем сохранять и извлекать данные, как показано ниже,

Сохранить:

      sessionStorage.setItem('id', noOfClicks);   // localStorage.setItem('id', noOfClicks);

sessionStorage.setItem('userDetails', JSON.stringify(userDetails));   // if it's object

Получить:

      sessionStorage.getItem('id');    // localStorage.getItem('id');

User user = JSON.parse(sessionStorage.getItem("userDetails")) as User;  // if it's object

Модифицировать:

      sessionStorage.removeItem('id');    // localStorage.removeItem('id');

sessionStorage.clear();   // localStorage.clear();

PS: getItem()также верните данные в виде строки, и нам нужно преобразовать их в формат JSON, чтобы получить доступ к объекту.

Подробнее о браузерных хранилищах можно прочитать здесь.

  1. Разница между localStorage, sessionStorage и куки

  2. localstorage-vs-sessionstorage

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

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

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

Другие вопросы по тегам