HTML5 Локальное хранилище против хранилища сессий
Есть ли какие-либо преимущества (производительность, доступ к данным и т. Д.) Для хранилища сеансов по сравнению с локальным хранилищем, кроме непостоянного и ограниченного только текущим окном?
13 ответов
localStorage и sessionStorage расширяют хранилище. Между ними нет никакой разницы, за исключением предполагаемого "непостоянства" sessionStorage
,
То есть данные хранятся в localStorage
сохраняется до явного удаления. Внесенные изменения сохраняются и доступны для всех текущих и будущих посещений сайта.
За sessionStorage
Изменения доступны только для каждого окна (или вкладки в браузерах, таких как Chrome и Firefox). Внесенные изменения сохраняются и доступны для текущей страницы, а также для будущих посещений сайта в том же окне. После закрытия окна хранилище удаляется.
Единственное отличие состоит в том, что у localStorage другое время истечения, sessionStorage
будет доступен только в то время как и в открывшемся окне. localStorage
длится до тех пор, пока вы не удалите его или пользователь не удалит его.
Допустим, вы хотели сохранить логин и пароль, которые хотели бы использовать sessionStorage
над localStorage
по соображениям безопасности (т. е. другое лицо, получающее доступ к своей учетной записи позднее).
Но если вы хотите сохранить настройки пользователя на его компьютере, вы, вероятно, захотите localStorage
, В общем:
localStorage
- использовать для длительного использования.sessionStorage
- использовать, когда вам нужно хранить что-то, что меняется или что-то временное
Несколько других моментов, которые могут помочь понять различия между локальным и сессионным хранилищем
Как локальное хранилище, так и хранилище сеансов ограничены источником документа, поэтому
https://mydomain.com/
http://mydomain.com/
https://mydomain.com:8080/Все вышеперечисленные URL не будут использовать одно и то же хранилище. (Обратите внимание, что путь к веб-странице не влияет на веб-хранилище)
Хранение сеансов отличается даже для документа с одинаковой исходной политикой, открытой на разных вкладках, поэтому одна и та же веб-страница, открытая на двух разных вкладках, не может использовать одно и то же хранилище сеансов.
Как локальное хранилище, так и хранилище сеансов также ограничиваются поставщиками браузеров. Таким образом, данные, сохраненные в 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, чтобы получить доступ к объекту.
Подробнее о браузерных хранилищах можно прочитать здесь.
Локальное хранилище: хранит данные пользовательской информации без даты истечения срока действия. Эти данные не будут удалены, когда пользователь закрыл окна браузера, они будут доступны для дня, недели, месяца и года.
//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";
Подробнее Нажмите