Что такое localStorage в браузере?

Ответ

localStorage — это API веб-хранилища (Web Storage), предоставляющий постоянное хранилище данных в формате «ключ-значение» на стороне клиента.

Характеристики:

  • Постоянство: Данные не имеют срока годности и сохраняются после закрытия браузера и перезагрузки ОС.
  • Объём: Ограничение ~5-10 МБ на домен (зависит от браузера).
  • Доступ: Только в контексте одного источника (origin) — комбинации протокола, домена и порта.
  • Тип данных: Хранит только строки. Для объектов необходимо использовать JSON.stringify() и JSON.parse().
  • Синхронность: Операции блокируют основной поток (не используйте для больших данных).

Базовые операции:

// Запись
localStorage.setItem('theme', 'dark');
localStorage.setItem('user', JSON.stringify({ id: 1, name: 'Alice' }));

// Чтение
const theme = localStorage.getItem('theme'); // 'dark'
const user = JSON.parse(localStorage.getItem('user')); // { id: 1, name: 'Alice' }

// Удаление одного элемента
localStorage.removeItem('theme');

// Полная очистка хранилища для текущего origin
localStorage.clear();

Важно: Данные доступны для JavaScript на той же странице, но не отправляются на сервер автоматически с каждым HTTP-запросом (в отличие от cookies).

Ответ 18+ 🔞

А, ну это же про ту самую штуку, где браузер в своей подворотне данные прячет! localStorage, блядь. Представь себе такой цифровой чулан под лестницей, куда ты можешь закинуть свои пожитки и они там, сука, навсегда останутся, пока ты сам их не выкинешь или пользователь не придет с метлой.

Это не печеньки, которые на сервер уплывают, нет. Это чисто твоя, ебать, локальная заначка. Хранишь что хочешь, но есть нюансы, блядь.

Вот на что смотреть:

  • Навечно, сука: Закинул — и всё. Закрыл браузер, вырубил комп, прошел год — данные на месте, как будто их Герасим сторожит. Пока не скажешь «удалить» или пользователь не почистит хранилища — они там.
  • Не резиновое: Места примерно 5-10 мегабайт на один сайт. Многовато для текста, но если ты туда, блядь, фотки в Base64 пихать начнешь — быстро кончится, ёпта.
  • Свой угол: Данные с сайта https://moysait.ru не увидит сайт https://drugoy.ru. У каждого своя камера хранения, своя параша, блядь. И порт ещё учитывается, этот ёперный театр.
  • Только строки: Вот это, блядь, главный подвох! Нельзя туда просто так объект сунуть. Только текст. Хочешь сохранить пользователя? Придется его, этого пользователя, в строку превратить, как колбасу в фарш.
  • Тормозит: Операции синхронные, то есть пока ты что-то записываешь или читаешь — всё остальное ждет. Не надо туда гигабайты лог-файлов пихать, а то страница встанет колом, пиздец.

Как этим пользоваться, не обосравшись:

// Запихнуть что-то в чулан
localStorage.setItem('theme', 'dark'); // Ключ и значение — строки
localStorage.setItem('user', JSON.stringify({ id: 1, name: 'Alice' })); // Объект сначала в строку!

// Достать обратно
const theme = localStorage.getItem('theme'); // Достанешь 'dark'
const user = JSON.parse(localStorage.getItem('user')); // А тут строку обратно в объект собираем. Без JSON.parse() получишь просто текст, который нихуя не работает.

// Выкинуть одну вещь
localStorage.removeItem('theme'); // Тема нахуй не нужна

// Устроить тотальную зачистку
localStorage.clear(); // Всё, чулан пуст. Все твои данные — в пизду.

Запомни главное: это твоя личная помойка на стороне клиента. Сервер про неё нихуя не знает, если ты сам не отправишь. Удобно для тем, настроек, корзины — всякой такой хуйни, которая должна пережить обновление страницы. Но доверять этому хранилищу, как родной матери, тоже не стоит — пользователь в любой момент может всё почистить, и волнение ебать, данные твои накрылись медным тазом.