foundation
Web Storage
Сравнивайте localStorage и sessionStorage, синхронную стоимость, квоты, сериализацию, время жизни и storage events.
localStorage и sessionStorage хранят строки per origin через простые синхронные API. localStorage переживает сессии; sessionStorage привязан к top-level browsing session. Удобны для мелких несекретных настроек, но не для больших данных, частых записей и секретов при XSS.
const key = 'theme';
localStorage.setItem(key, JSON.stringify({ mode: 'dark' }));
const theme = JSON.parse(localStorage.getItem(key) ?? '{"mode":"light"}');
Событие storage срабатывает в других документах того же origin при изменении localStorage — для синхронизации темы между вкладками, не для надёжной шины сообщений.
На интервью: сравните Web Storage с cookies, IndexedDB, памятью и серверным состоянием по чувствительности и сроку жизни.
Типовые ошибки: синхронные чтения блокируют main thread; токены в Web Storage усиливают последствия XSS.
Компромисс: удобство против контроля — выбирайте механизм под вашу связность и бюджет производительности.
Чеклист:
- Только мелкие несекретные данные.
- Явная сериализация со схемой/версией.
- Не пишите на каждый input.
- Знайте срок: local vs session.