Назад к вопросам
Junior
87
questionbank

Какие способы хранения данных в браузере вам известны?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  • LocalStorage: Позволяет хранить данные без срока истечения. Доступно только для текущего домена (Origin). Объем до 5-10 МБ.
  • SessionStorage: Похоже на LocalStorage, но данные хранятся только до закрытия вкладки или окна браузера. Объем до 5-10 МБ.
  • IndexedDB: Высокопроизводительная NoSQL-база данных, встроенная в браузер. Подходит для хранения больших объемов структурированных данных. Работает асинхронно. Объем до нескольких сотен МБ или даже ГБ (зависит от браузера и свободного места).
  • Cookies: Небольшие кусочки данных, отправляемые сервером и хранящиеся в браузере. Используются в основном для аутентификации и отслеживания состояния сеанса. Автоматически отправляются с каждым запросом к серверу. Объем до 4 КБ на куки, не более 20-50 куки на домен.
  • Cache API: Часть Service Worker, используется для кеширования запросов и ответов, что позволяет работать офлайн и ускорять загрузку.

Сравнительная таблица:

Способ Объем данных Срок хранения Доступ с сервера Тип данных Доступ
LocalStorage 5-10 МБ Бессрочно (до очистки вручную) Нет Строки Только JS на клиенте
SessionStorage 5-10 МБ До конца сессии Нет Строки Только JS на клиенте
IndexedDB Сони МБ - ГБ Бессрочно (до очистки вручную) Нет Структурированные Только JS на клиенте
Cookies 4 КБ на куки Устанавливается сервером Да Строки JS и HTTP-заголовки
Cache API Сотни МБ - ГБ До очистки вручную Нет (опосредованно) HTTP-запросы/ответы JS (Service Worker)

Пример использования LocalStorage:

// Сохранение данных
localStorage.setItem('userName', 'John Doe');

// Чтение данных
const userName = localStorage.getItem('userName');
console.log(userName); // Output: John Doe

// Удаление данных
// localStorage.removeItem('userName');
// localStorage.clear(); // Удалить все данные

Пример использования SessionStorage:

// Сохранение данных
sessionStorage.setItem('cartId', 'abc123def456');

// Чтение данных
const cartId = sessionStorage.getItem('cartId');
console.log(cartId); // Output: abc123def456

// Удаление данных
// sessionStorage.removeItem('cartId');
// sessionStorage.clear(); // Удалить все данные

Пример установки куки через JS (для простоты, обычно устанавливаются сервером):

// Установка куки
document.cookie = "myCookie=myValue; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// Чтение всех куки
console.log(document.cookie);

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