Чем Session Storage отличается от Local Storage?

Ответ

Session Storage — это механизм клиентского хранилища, аналогичный Local Storage, но с ключевым отличием в времени жизни данных.

Основное отличие: Данные в sessionStorage сохраняются только в течение сессии конкретной вкладки/окна браузера. При закрытии вкладки данные безвозвратно удаляются.

Сравнительная таблица: Характеристика Session Storage Local Storage
Время жизни Данные живут в рамках сессии вкладки браузера. Данные сохраняются до явного удаления.
Объем ~5 МБ на домен. ~5-10 МБ на домен.
Область видимости Изолирована для каждой вкладки/окна (даже с тем же URL). Общая для всех вкладок и окон с одним происхождением (origin).
API Аналогичен (setItem, getItem, removeItem, clear). Аналогичен.
Формат данных Только строки. Только строки.

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

// Сохранение временных данных формы при переходе между шагами в одной вкладке
sessionStorage.setItem('multiStepFormData', JSON.stringify({
    step1: { name: 'John' },
    step2: { email: 'john@example.com' }
}));

// Получение данных на следующей странице/шаге
const formData = JSON.parse(sessionStorage.getItem('multiStepFormData'));
console.log(formData.step1.name); // 'John'

// Данные будут потеряны, если пользователь закроет вкладку.

Типичные сценарии применения:

  • Временное хранение данных многостраничной формы (wizard).
  • Кэширование информации в рамках одной сессии для избежания повторных запросов.
  • Сохранение состояния UI, которое должно сбрасываться при новом открытии приложения.

Ответ 18+ 🔞

А, ну это же про ту самую штуку, которая помнит всё, пока ты в одной вкладке сидишь! Session Storage, блядь! Представь себе: ты как будто на кухне оставляешь записку на холодильнике, а потом закрываешь дверь нахуй — и всё, записка испарилась. Вот это оно и есть.

В чём соль, а? Это как Local Storage, его брат-близнец, но с одним ёбушки-воробушки отличием — данные живут, пока вкладка не захлопнулась. Закрыл таб — и пиздец, всё пропало, будто и не было. Никаких следов, как после хорошей пьянки.

Смотри, как они отличаются, эти два ублюдка:

Признак Session Storage Local Storage
Сколько живут данные Пока вкладка открыта. Закрыл — в рот меня чих-пых, всё! До тех пор, пока ты их вручную не сотрёшь или браузер не снесёт. Живут, как тараканы.
Сколько можно нахранить Примерно 5 МБ на один сайт. Тоже около 5-10 МБ, зависит от браузера.
Кто видит эти данные Только одна конкретная вкладка. Откроешь новую — там уже пусто, нихуя. Все вкладки и окна, которые на этот же сайт зашли. Общедоступное говно.
Как с ними работать Одинаково, те же самые команды: положить, достать, удалить. Точно так же, один в один.
Что можно хранить Только текст, блядь. Объекты и массивы — только если в строку превратить. Опять же, только строки. Никаких тебе картинок напрямую.

Вот тебе живой пример, как этим пользоваться:

// Допустим, ты заполняешь многостраничную форму, а потом тебя перекидывает на другую страницу.
// Чтобы не потерять введённое, пихаем всё в sessionStorage.
sessionStorage.setItem('multiStepFormData', JSON.stringify({
    step1: { name: 'Василий' },
    step2: { email: 'vasya@example.com' }
}));

// Потом, на следующем шаге, достаём это добро обратно.
const formData = JSON.parse(sessionStorage.getItem('multiStepFormData'));
console.log(formData.step1.name); // Выведет 'Василий'

// И помни: закроешь вкладку — и всё, твой Василий нахуй сгинет.

А где это, блядь, пригождается в жизни?

  • Когда ты проходишь какую-нибудь многошаговую хуйню типа оформления заказа, и нужно временно держать данные, пока ты по шагам прыгаешь.
  • Чтобы лишний раз не дергать сервер в рамках одной сессии — закэшировал ответ и пользуешься, пока вкладка жива.
  • Сохранить состояние интерфейса (например, раскрытые менюшки), которое должно сброситься, как только пользователь заново откроет приложение.