Объясните разницу между 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