Какие есть ограничения по объему у хранилищ?
DOM и браузер
Ограничения по объёму: cookie — ~4 КБ, localStorage/sessionStorage — ~5–10 МБ, IndexedDB — большие объёмы (сотни МБ и больше, до % от диска), Cache API — тоже большой (зависит от квоты браузера).
Лимиты хранилищ
Cookie — ~4 КБ
На одну cookie ~4 КБ; общий лимит на домен — несколько десятков cookie. Плюс cookie шлётся с каждым запросом — большой размер бьёт по трафику.
localStorage / sessionStorage — ~5–10 МБ
Обычно ~5 МБ на origin (в некоторых браузерах до 10 МБ). Синхронный доступ — большие объёмы блокируют поток.
IndexedDB — большие объёмы
Сотни МБ и больше; лимит зависит от квоты браузера (часто процент от свободного места на диске — гигабайты). Для больших структурированных данных.
Cache API (Service Worker) — большой
Тоже подчиняется квоте origin (может быть много), для кеширования ресурсов.
Общая квота браузера
Браузеры выделяют origin общую квоту (для IndexedDB + Cache API), часто зависящую от свободного места на диске. При превышении — ошибки записи или вытеснение (eviction).
Проверка квоты
const { quota, usage } = await navigator.storage.estimate();Как выбирать по объёму
- Маленькие данные для сервера → cookie (~4 КБ).
- До ~5 МБ клиентских настроек → localStorage.
- Большие структурированные данные → IndexedDB.
- Кеш ресурсов → Cache API.
Коротко для собеседования
Лимиты: cookie ~4 КБ (шлётся на сервер), localStorage/sessionStorage ~5–10 МБ на origin (синхронные), IndexedDB — большие объёмы (сотни МБ+, по квоте браузера, часто % диска), Cache API — тоже большой. Квоту проверяют через navigator.storage.estimate(). Выбор по объёму: cookie → localStorage → IndexedDB.