Какие браузерные хранилища знаешь? Расскажи их отличия.

👨‍💻 Frontend Developer 🟢 Почти точно будет 🎚️ Средний
#JavaScript #Браузер #База JS

Краткий ответ

Основные браузерные хранилища:

  1. localStorage — постоянное хранение, данные не исчезают 💾
  2. sessionStorage — временное хранение, до закрытия вкладки 🕐
  3. Cookies — маленькие данные, автоматически отправляются на сервер 🍪
  4. IndexedDB — полноценная база данных в браузере 🗄️
// localStorage — навсегда
localStorage.setItem('key', 'value');
 
// sessionStorage — до закрытия вкладки
sessionStorage.setItem('key', 'value');
 
// Cookies — с автоматической отправкой
document.cookie = 'key=value';
 
// IndexedDB — полноценная БД
const db = indexedDB.open('myDB');

Полный ответ

Браузерные хранилища — как разные типы коробок для хранения вещей. У каждой свой срок годности и назначение! 📦

localStorage — сейф на дому

Хранит данные навсегда, пока не удалишь:

// Сохраняем навсегда
localStorage.setItem('theme', 'dark');
 
// Даже после перезагрузки компьютера данные остаются
console.log(localStorage.getItem('theme')); // 'dark'
 
// Объём: 5-10 МБ

sessionStorage — карман в куртке

Хранит данные только во время сессии:

// Сохраняем до закрытия вкладки
sessionStorage.setItem('formStep', '2');
 
// После закрытия вкладки всё исчезает
console.log(sessionStorage.getItem('formStep')); // '2' (пока вкладка открыта)
 
// Объём: 5-10 МБ

Cookies — записки для сервера

Маленькие данные, которые автоматически летят на сервер:

// Отправляются с каждым запросом на сервер!
document.cookie = 'userId=123; path=/; expires=Fri, 31 Dec 2024 23:59:59 GMT';
 
// Очень маленький объём: 4 КБ
// Много cookies = медленные запросы!

IndexedDB — домашняя библиотека

Полноценная база данных в браузере:

// Можно хранить много данных (до ГБ!)
// Работает асинхронно
// Сложнее в использовании
 
const request = indexedDB.open('myDatabase', 1);
// Для сложных структур данных

Сравнение всех хранилищ

ХранилищеОбъёмСрок жизниАвтоотправкаСложность
localStorage5-10 МБНавсегдаНетПросто
sessionStorage5-10 МБДо закрытия вкладкиНетПросто
Cookies4 КБПо дате истеченияДаСредне
IndexedDBДо ГБНавсегдаНетСложно

Когда что использовать

localStorage

// ✅ Постоянные настройки
localStorage.setItem('language', 'ru');
localStorage.setItem('theme', 'dark');

sessionStorage

// ✅ Временные данные формы
sessionStorage.setItem('draft', 'текст черновика');

Cookies

// ✅ Токены авторизации (осторожно!)
document.cookie = 'token=abc123';

IndexedDB

// ✅ Большие объёмы данных
// Офлайн-приложения, игры, редакторы

Частые ошибки

Хранить большие данные в cookies

// ❌ Плохо — cookies отправляются с каждым запросом
document.cookie = 'bigData=очень_большие_данные'; // Замедляет сайт!
 
// ✅ Лучше — использовать localStorage
localStorage.setItem('bigData', 'очень_большие_данные');

Путать сроки жизни

// ❌ Ошибка — думают, что sessionStorage тоже навсегда
sessionStorage.setItem('important', 'data'); // Исчезнет!
 
// ✅ Правильно — использовать localStorage для важного
localStorage.setItem('important', 'data');

Простые правила

  1. localStorage — для постоянных настроек 💾
  2. sessionStorage — для временных данных 🕐
  3. Cookies — для авторизации (мало!) 🍪
  4. IndexedDB — для больших объёмов данных 🗄️
  5. Cookies маленькие — не засоряй ими запросы ⚠️
  6. Безопасность — не храни пароли в localStorage 🔐

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


Хотите больше статей для подготовки к собеседованиям? Подписывайтесь на EasyAdvice, добавляйте сайт в закладки и совершенствуйтесь каждый день 💪