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

436

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

  • 15
    @ Роберт - Я считаю, что вы не правы. С w3.org/TR/webstorage sessionStorage находится в области «контекста просмотра верхнего уровня», что означает, что он уникален для каждой вкладки / окна браузера. Однако localStorage относится к исходной точке, что означает, что он является общим для всех страниц одного источника.
  • 5
    Re: производительность jsperf.com/localstorage-vs-sessionstorage
Показать ещё 1 комментарий
Теги:
local-storage
session-storage

12 ответов

659
Лучший ответ

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

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

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

  • 16
    есть более широкое обсуждение, которое может оказаться полезным здесь: stackoverflow.com/questions/19867599/…
  • 12
    если вы сохраните некоторые данные в хранилище под http, вы не сможете получить их по https
Показать ещё 3 комментария
137

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

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

91

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

  • Как локальное хранилище, так и хранилище сеансов привязаны к исходному документу, поэтому

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

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

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

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

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

  • 2
    Нет, тот же сеанс sessionStorage разделяется между http и https, но localStorage нет.
  • 2
    Если вы сначала установили sessionStorage в источнике https, он будет доступен в http, но если вы создадите sessionStore в http, он не будет доступен в http
Показать ещё 2 комментария
26

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

Еще одна тонкая разница заключается в том, что, например, в Safari (8.0.3) localStorage имеет ограничение 2551 k символов, но sessionStorage имеет неограниченное хранилище

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

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

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

Там также проблема с Mobile Safari и Mobile Chrome, Safari для частного режима и Chrome имеет максимальное пространство в 0KB

  • 1
    ограничено 5101 k символов? итак .. 5,101 миллиона символов?
  • 0
    @Zze Да, 1 символ обычно составляет 1 байт, следовательно, 5 миллионов символов требуют 5 МБ памяти.
Показать ещё 3 комментария
10

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

9

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

9

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

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

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

  • 1
    Относительно производительности загрузки страницы: и sessionStorage, и localStorage запускаются и заполняются вне цикла загрузки страницы. Поэтому потери в начальном времени загрузки страницы не могут быть измерены в браузере.
6

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

6

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

5

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

1

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

//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
  • sessionStorage поддерживает отдельную область хранения для каждого данного источника, доступную на время сеанса страницы (до тех пор, пока браузер открыт, включая перезагрузку и восстановление страницы)

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

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

  • 0
    Ссылка на решение приветствуется, но, пожалуйста, убедитесь, что ваш ответ полезен без нее: добавьте контекст вокруг ссылки, чтобы ваши коллеги-пользователи имели представление о том, что это такое и почему, а затем процитируйте наиболее релевантную часть страницы, которую вы ' Повторная ссылка на случай, если целевая страница недоступна. Ответы, которые немного больше, чем ссылка, могут быть удалены

Ещё вопросы

Сообщество Overcoder
Наверх
Меню