localStorage, sessionStorage, cookies, IndexedDB
Это все способы хранения данных в браузере, но с разными особенностями по объему, сроку жизни и доступу.
1️⃣ localStorage
Хранение данных на стороне клиента постоянно (пока не удалят вручную).
Доступно только для скриптов на том же домене.
Ограничение объема: ~5–10 МБ.
Пример:
localStorage.setItem("token", "123abc");
let token = localStorage.getItem("token");2️⃣ sessionStorage
Хранение данных только на время сессии (пока открыта вкладка).
Данные удаляются при закрытии вкладки.
Ограничение объема: ~5–10 МБ.
Пример:
sessionStorage.setItem("sessionId", "xyz789");
let sessionId = sessionStorage.getItem("sessionId");3️⃣ Cookies
Малый объем (~4 КБ).
Отправляются на сервер с каждым HTTP-запросом (если не установлен флаг HttpOnly).
Можно задать срок жизни или сделать сессионными.
Пример:
document.cookie = "user=John; expires=Fri, 31 Dec 2025 23:59:59 GMT; path=/";Особенности:
Используются для сессий, авторизации.
Могут быть защищены через
HttpOnly,SecureиSameSite.
4️⃣ IndexedDB
Клиентская база данных в браузере.
Поддерживает структурированные объекты, транзакции, индексы.
Объем: десятки мегабайт и больше.
Используется для сложного хранения данных (например, оффлайн-приложения, кеш больших данных).
Пример:
let request = indexedDB.open("MyDatabase", 1);
request.onsuccess = function(event) {
let db = event.target.result;
let tx = db.transaction("users", "readwrite");
let store = tx.objectStore("users");
store.add({id: 1, name: "Alice"});
};Кратко о различиях
localStorage
постоянный
~5–10 МБ
нет
только для скриптов
sessionStorage
сессия (вкладка)
~5–10 МБ
нет
удаляется при закрытии вкладки
cookies
зависит от expiry
~4 КБ
да
для авторизации и сессий
IndexedDB
постоянный
десятки МБ+
нет
полноценная база данных
Last updated
Was this helpful?