Ответ
Сессия sessionStorage в веб-браузере завершается при следующих условиях:
- Закрытие вкладки браузера — данные удаляются для конкретной вкладки.
- Закрытие окна браузера — если не активирована функция восстановления сессии.
- Явный вызов JavaScript-методов:
sessionStorage.clear()— удаляет все данные сессии.sessionStorage.removeItem('key')— удаляет значение по конкретному ключу.
Ключевые отличия от localStorage:
sessionStorageпривязан к вкладке/окну, аlocalStorage— к источнику (origin) и сохраняется между сессиями.- Данные
sessionStorageне отправляются на сервер автоматически с каждым HTTP-запросом (в отличие от cookies).
Пример работы:
// Сохранение данных на время сессии вкладки
sessionStorage.setItem('authToken', 'abc123xyz');
sessionStorage.setItem('userPreferences', JSON.stringify({ theme: 'dark' }));
// Получение данных
const token = sessionStorage.getItem('authToken');
const prefs = JSON.parse(sessionStorage.getItem('userPreferences'));
// Удаление данных
sessionStorage.removeItem('authToken');
// Или полная очистка
sessionStorage.clear();
Важно: Время жизни не зависит от таймаута, только от состояния вкладки/окна.
Ответ 18+ 🔞
А, ну это ж про ту самую штуку, которая живёт, пока вкладка не прикрылась! sessionStorage, блядь. Ну слушай, тут всё просто, как три копейки.
Вот представь: открыл ты в браузере вкладку — и для неё, как в отдельной квартире, заводится свой sessionStorage. И живёт он ровно до того момента, пока ты эту вкладку не прикроешь. Хлопнул крышку — всё, пиздец, квартира сгорела со всем содержимым. Данные удалились нахуй.
Так когда конкретно всё накрывается медным тазом?
- Закрыл вкладку — ну, тут всё ясно, блядь. Данные — в тартарары, только для этой вкладки.
- Закрыл всё окно браузера целиком — тут то же самое, если только у тебя не включено восстановление сессий, эта хитрая жопа.
- Сам, своими руками, через код всё выкосил — ну тут уж сам виноват, блядь:
sessionStorage.clear()— это как взять и выгрести всё из квартиры в мусорный бак. Чистота, нихуя не осталось.sessionStorage.removeItem('ключ')— а это точечно, как выкинуть один старый хлам, например, стул.
А чем это, сука, отличается от localStorage?
А вот тут, блядь, ключевой момент, запомни как "Отче наш":
sessionStorage— это твоя одноразовая съёмная хата на одну вкладку. Закрыл — и всё, свободна, блядь, комната.localStorage— это уже твоя постоянная прописка на всём домене (origin). Закрыл браузер, выключил комп, пришёл через неделю — а твои данные всё ещё там, как ни в чём не бывало. Они между сессиями сохраняются, ёпта.
И ещё, что важно: эти данные не лезут на сервер сами, в отличие от куков, которые с каждым запросом, как назойливые мухи, летят туда-сюда. Тут всё тихо, локально.
Ну и как с этим работать-то, на практике?
Смотри, вот тебе живой пример, как это всё выглядит в коде:
// Записываем что-то на время сессии этой вкладки
sessionStorage.setItem('authToken', 'abc123xyz'); // Допустим, токен авторизации
sessionStorage.setItem('userPreferences', JSON.stringify({ theme: 'dark' })); // Настройки пользователя
// Потом где-то в другом месте скрипта достаём
const token = sessionStorage.getItem('authToken'); // Достали токен
const prefs = JSON.parse(sessionStorage.getItem('userPreferences')); // Достали и распарсили настройки
// А когда надо почистить за собой
sessionStorage.removeItem('authToken'); // Выкинули только токен
// Или вообще всё к хуям
sessionStorage.clear(); // Полная зачистка, нихуя не осталось
И главное, блядь, что тут нет никакого таймаута по времени! Не будет так, что "через 15 минут само удалится". Нет. Только состояние вкладки решает — открыта она или уже в аду. Вот и вся философия.