Sobes.tech
Junior
145
questionbank

Объясните разницу между cookies, sessionStorage и localStorage.

Ответ от нейросети

sobes.tech AI

Cookies, sessionStorage и localStorage - это механизмы веб-хранилища, отличающиеся по назначению, сроку жизни и объему хранимых данных.

  • Cookies: Небольшие фрагменты данных, отправляемые веб-сервером и сохраняемые на компьютере пользователя веб-браузером. Пересылаются с каждым последующим запросом к тому же серверу. Используются для аутентификации, хранения предпочтений пользователя, отслеживания состояния корзины покупок.

    • Срок жизни: Задается при создании (может быть сессионным или с определенным сроком истечения).
    • Объем: Ограничен, обычно несколько килобайт (около 4 КБ).
  • sessionStorage: Хранит данные только для одной сессии браузера (открытой вкладки или окна). Данные удаляются при закрытии вкладки или окна.

    • Срок жизни: До закрытия вкладки или окна браузера.
    • Объем: Значительно больше, чем у cookies (обычно несколько мегабайт).
  • localStorage: Хранит данные без срока действия, до тех пор, пока они не будут явным образом удалены пользователем или сценарием. Доступен во всех вкладках и окнах одного и того же домена.

    • Срок жизни: Постоянный (до явного удаления).
    • Объем: Значительно больше, чем у cookies (обычно несколько мегабайт).

Вот краткое сравнение:

Механизм Срок жизни Доступность Отправляется серверу Объем (типичный) Назначение
Cookies Сессионный или с истечением срока Через HTTP-заголовки Да ~4 KB Аутентификация, отслеживание, предпочтения
sessionStorage До закрытия вкладки/окна Через JS API Нет ~5-10 MB Временное хранение данных сессии
localStorage Постоянный (до удаления) Через JS API Нет ~5-10 MB Долгосрочное хранение данных

Примеры использования JavaScript API:

// Cookies (доступ через document.cookie, требует ручной парсинг и сериализацию)
document.cookie = "username=John Doe; expires=Thu, 18 Dec 2023 12:00:00 UTC; path=/";

// sessionStorage
sessionStorage.setItem('id', '123');
let userId = sessionStorage.getItem('id');
sessionStorage.removeItem('id');

// localStorage
localStorage.setItem('theme', 'dark');
let userTheme = localStorage.getItem('theme');
localStorage.removeItem('theme');
localStorage.clear(); // Очищает все данные в localStorage