Skip to content

Что такое IndexedDB

Коротко:

IndexedDB — встроенная в браузер NoSQL-база для хранения structured data (записи, blobs, files) на клиенте. Async API, transactional, поддерживает indexes, 100+ MB storage. Используется в PWA для offline-first + кеш большого объёма. Замена устаревшим WebSQL. Альтернативы: localForage (wrapper), Dexie.js (ORM-like).

Ниже: подробности, пример, смежные термины, FAQ.

Подробности

  • Object stores (= collections): организуют records по keyPath
  • Transactions: readonly / readwrite / versionchange
  • Indexes: secondary keys для efficient queries
  • Storage quota: ~20-60% free disk (Chrome), ~1GB (Safari)
  • Eviction: browser может очистить при нехватке space

Пример

const request = indexedDB.open('myDB', 1);
request.onupgradeneeded = e => {
  e.target.result.createObjectStore('users', { keyPath: 'id' });
};
request.onsuccess = e => {
  const tx = e.target.result.transaction('users', 'readwrite');
  tx.objectStore('users').put({ id: 1, name: 'Alice' });
};

Смежные термины

Больше по теме

Часто задаваемые вопросы

IndexedDB vs localStorage?

localStorage — 5-10 MB, sync, string-only. IndexedDB — гигабайты, async, structured objects + indexes.

Можно ли mobile?

Да, все modern browsers (Safari iOS, Chrome Android). Safari частично ограничен в PWA context.

Eviction — пропадёт ли моя data?

При нехватке disk space — да. Для critical data используйте <code>navigator.storage.persist()</code>.