← Назад к вопросам
Зачем нужен Session Storage?
1.0 Junior🔥 131 комментариев
#Soft Skills и рабочие процессы
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Session Storage в браузере
Session Storage — это Web Storage API, которая хранит данные в пределах одной сессии браузера. Это один из механизмов для сохранения информации на клиенте, наряду с Local Storage и Cookie.
Основные характеристики
Время жизни:
- Данные удаляются при закрытии вкладки или окна браузера
- Каждая вкладка имеет свое изолированное хранилище
- Это отличает её от Local Storage, где данные хранятся постоянно
Объем и границы:
- Обычно 5-10 МБ на домен (зависит от браузера)
- Работает только на клиентской стороне
- Синхронное хранилище — операции блокируют выполнение кода
Область видимости:
- Данные видны только в пределах одного домена (включая протокол и порт)
- Разные вкладки одного домена имеют разные Session Storage
- Iframe может получить доступ к Session Storage родительской страницы
Примеры использования
// Сохранение данных
sessionStorage.setItem(userPreferences, JSON.stringify({
theme: dark,
language: ru
}));
// Получение данных
const preferences = JSON.parse(sessionStorage.getItem(userPreferences));
console.log(preferences); // { theme: dark, language: ru }
// Удаление конкретного ключа
sessionStorage.removeItem(userPreferences);
// Очистка всего хранилища
sessionStorage.clear();
// Получение количества элементов
console.log(sessionStorage.length);
// Получение ключа по индексу
const keyName = sessionStorage.key(0);
Практические примеры использования
Сохранение состояния при навигации:
// На странице с формой
const saveFormState = (formData) => {
sessionStorage.setItem(formState, JSON.stringify(formData));
};
// При возврате на страницу
const restoreFormState = () => {
const saved = sessionStorage.getItem(formState);
return saved ? JSON.parse(saved) : null;
};
Сохранение временных настроек:
// Сохранение выбранных фильтров для одной сессии
const applyFilters = (filters) => {
sessionStorage.setItem(activeFilters, JSON.stringify(filters));
};
const getActiveFilters = () => {
return JSON.parse(sessionStorage.getItem(activeFilters) || {});
};
Отслеживание состояния модального окна:
// Запомнить, был ли открыт модал, чтобы переоткрыть при перезагрузке
const openModal = (modalId) => {
sessionStorage.setItem(openedModal, modalId);
};
const getOpenedModal = () => {
return sessionStorage.getItem(openedModal);
};
Session Storage vs Local Storage vs Cookie
| Характеристика | Session Storage | Local Storage | Cookie |
|---|---|---|---|
| Время жизни | До закрытия вкладки | Постоянно | Можно установить |
| Размер | 5-10 МБ | 5-10 МБ | 4 КБ |
| Доступ | Клиент | Клиент | Клиент + Сервер |
| Синхронность | Синхронно | Синхронно | Отправляется с каждым запросом |
| Безопасность | Уязвима для XSS | Уязвима для XSS | Может быть HttpOnly |
| Использование | Временные данные | Постоянные настройки | Аутентификация |
Когда использовать Session Storage
Хорошие случаи использования:
- Сохранение состояния многошаговой формы
- Кэширование данных, полученных в этой сессии
- Сохранение позиции скролла или открытого раздела
- Временное хранение ID элемента для фильтрации
- Сохранение параметров поиска для одной сессии
Плохие случаи использования:
- Хранение конфиденциальных данных (используй HttpOnly Cookie)
- Данные, которые должны пережить закрытие вкладки (используй Local Storage)
- Большие объемы данных (может замедлить приложение)
- Критичные для бизнеса данные (нужна синхронизация с сервером)
Важные моменты
Производительность:
- Доступ к Session Storage — синхронная операция, может блокировать UI
- Для больших объемов данных лучше использовать IndexedDB
- Не нужно сохранять данные, которые хранятся на сервере
Безопасность:
- Доступна для XSS атак
- Не отправляется автоматически на сервер
- Используй CSP (Content Security Policy) для защиты
Масштабируемость:
- При сложной структуре данных используй JSON для сериализации
- Валидируй данные при восстановлении из хранилища
- Не полагайся только на Session Storage для критичных данных