Local, Session storages; Cookies; Indexed DB

Local Storage

Может записывать в себя лишь строки, поэтому необходимо юзать JSON.stringify(obj) для записи объекта и JSON.parse(obj) для последующей работы с ним.

  • JSON объект (пара: ключ, значение)

  • Не создается сервером, как Cookie

  • Размер в разных браузерах разный может быть, но около 5 мб (+-2мб) (больше по объему, чем Cookie)

  • Содержит только строки

  • синхронный

  • Любой JS имеет доступ, нет защиты

  • Не отправляется на сервер при каждом запросе, в отличие от Cookie

  • Привязан к домену/порту

  • содержат Expiration Date

Session Storage

Тоже самое что и Local Storage, только данные очищаются в момент закрытия страницы/вкладки (но не в момент ее перезагрузки). Не содержат Expiration Date.

Cookies

Небольшой фрагмент данных, небольшие строки данных, отправляемый веб-сервером и хранимый на компьютере пользователя.

Куки обычно устанавливаются веб-сервером при помощи заголовка Set-Cookie.Браузер при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в составе HTTP-запроса.

Уменьшают нагрузку на сервер и сохраняются на стороне клиента.

Юзаются для аутентификации, корзины, хранение настроек пользователя, статистики.

Примерный размер ~ 4Кб

Типы:

  • сессионные(временные)

  • Постоянные(удаляются в определенную дату или через определенный промежуток времени)

  • Сторонние: обычно атрибут домена куки совпадает с доменом, который отображается в адресной строке. Однако сторонний файл кук принадлежит домену, отличному от домена адресной строки.

  • Супер-куки(с источником домена верхнего уровня (.ru...))

  • Безопасные(если куки отсылаются на сервер только по протоколу SSL и HTTPS)

IndexedDB

IndexedDB – это встроенная NoSQL база данных, более мощная, чем localStorage, доступная в браузере, в которой вы можете хранить сложные связанные данные, типы которых не ограничиваются простыми значениями, такими как строки или числа. Это способ постоянного хранения данных внутри клиентского браузера, другими словами это NOSQL хранилище на стороне клиента.

IndexedDB оперирует не таблицами, а хранилищами объектов: ObjectStore. При создании ObjectStore можно указывать его имя и параметры: имя ключевого поля (строковое свойство объекта настроек: keyPath) и автогенерацию ключа (булево свойство объекта настроек: autoIncrement).

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

  • Все операции с данными в БД производятся через атомарные транзакции операций. Которые позволяются откатиться в исходное состояние при сбое в одной из операции.

  • Поддерживает запросы в диапазоне ключей и индексы.

  • Позволяет хранить больше данных, чем localStorage;

  • предлагает NoSQL структурированное хранилище; объекты можно хранить в хранилищах объектов IndexedDB и запрашивать их, используя запросы к БД

IndexedDB предназначена для оффлайн приложений. Вы можете сохранить видео, фото, и почти все остальные файлы с IndexedDB.

Однако это обходится дорого: IndexedDB гораздо сложнее в использовании, чем Web Storage API.

Транзакция – это группа операций, которые должны быть или все выполнены, или все не выполнены (всё или ничего). Все операции с данными в IndexedDB могут быть сделаны только внутри транзакций.

При ошибке в запросе соответствующая транзакция отменяется полностью, включая изменения, сделанные другими её запросами.

События IndexedDB всплывают: запространзакциябаза данных.

Last updated