В чем разница между cookie и Web Storage (LocalStorage/SessionStorage)?

«В чем разница между cookie и Web Storage (LocalStorage/SessionStorage)?» — вопрос из категории Сети, который задают на 25% собеседований C# Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Cookie и Web Storage (LocalStorage/SessionStorage) — это механизмы хранения данных на стороне клиента, но с разными целями и характеристиками.

Характеристика Cookie LocalStorage SessionStorage
Объем ~4 КБ на домен ~5-10 МБ на домен ~5-10 МБ на домен
Срок жизни Устанавливается вручную (Expires/Max-Age). Могут быть сессионными (до закрытия браузера). Сохраняются до явного удаления (JS или очистки браузера). Удаляются при закрытии вкладки/браузера.
Передача на сервер Автоматически отправляются с каждым HTTP-запросом (заголовки Cookie). Не отправляются автоматически. Доступны только через JavaScript. Не отправляются автоматически. Доступны только через JavaScript.
Доступ Доступны и на клиенте (document.cookie), и на сервере. Только на клиенте через window.localStorage. Только на клиенте через window.sessionStorage.
Синтаксис Строка в формате key=value, сложный парсинг. Простой API (setItem, getItem), работа с ключ-значением. Простой API (setItem, getItem), работа с ключ-значением.

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

  • Cookie: Идентификация сессии (токены), персональные настройки, которые нужны серверу. Из-за ограниченного размера и накладных расходов не подходят для больших данных.
  • LocalStorage: Сохранение непередаваемых данных приложения (настройки UI, кэш), работа в оффлайн-режиме. Данные сохраняются между сессиями.
  • SessionStorage: Временное хранение данных в рамках одной вкладки (например, состояние многошаговой формы).

Пример работы с LocalStorage:

// Сохранить данные
localStorage.setItem('theme', 'dark');
localStorage.setItem('userPreferences', JSON.stringify({ fontSize: 14 }));

// Получить данные
const theme = localStorage.getItem('theme'); // 'dark'
const prefs = JSON.parse(localStorage.getItem('userPreferences')); // { fontSize: 14 }

// Удалить данные
localStorage.removeItem('theme');
// Очистить всё
localStorage.clear();

Ключевое отличие: Cookies предназначены для обмена небольшими порциями данных между клиентом и сервером, а Web Storage — это клиентская база данных ключ-значение для хранения больших объемов информации, не покидающей браузер.