Какой максимальный объем данных можно хранить в LocalStorage браузера?

«Какой максимальный объем данных можно хранить в LocalStorage браузера?» — вопрос из категории Веб-тестирование, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Большинство современных браузеров предоставляет ~5 МБ (мегабайт) на один домен (протокол + домен + порт). Это ограничение может незначительно варьироваться (например, до 10 МБ в некоторых браузерах).

Практические аспекты:

  • Данные хранятся только в виде строк (key-value). Для объектов используйте JSON.stringify() при записи и JSON.parse() при чтении.
  • Превышение лимита вызывает исключение QuotaExceededError.
  • Объем общий для всех ключей в рамках домена.

Пример проверки доступного пространства (осторожно, очистит данные test):

function estimateLocalStorageLimit() {
  const testKey = 'test';
  let data = '';
  // Создаем строку ~1 МБ
  const oneMegabyte = 'a'.repeat(1024 * 1024);

  try {
    // Пытаемся записывать данные, пока не получим ошибку
    while (true) {
      data += oneMegabyte;
      localStorage.setItem(testKey, data);
    }
  } catch (e) {
    // Вычисляем записанный объем в МБ
    const used = (data.length / (1024 * 1024)).toFixed(2);
    console.log(`Примерный доступный объем: ${used} МБ`);
    localStorage.removeItem(testKey); // Очистка
  }
}

Важно: Для надежных приложений не стоит полагаться на максимальный лимит, а реализовать обработку ошибок при записи.