Ответ
IndexedDB — это NoSQL база данных в браузере, позволяющая хранить большие объемы структурированных данных на стороне клиента. В отличие от localStorage, поддерживает транзакции, индексы и асинхронные операции.
Ключевые особенности:
- Работает в основном потоке, но не блокирует UI (асинхронный API)
- Хранит данные в виде пар ключ-значение
- Поддерживает сложные запросы через индексы
- Лимит хранилища зависит от браузера (обычно 50-80% от свободного места на диске)
Пример использования:
const request = indexedDB.open('MyDatabase', 1);
request.onupgradeneeded = (event) => {
const db = event.target.result;
const store = db.createObjectStore('books', { keyPath: 'id' });
store.createIndex('by_title', 'title', { unique: false });
};
request.onsuccess = (event) => {
const db = event.target.result;
const tx = db.transaction('books', 'readwrite');
const store = tx.objectStore('books');
store.add({ id: 1, title: 'JavaScript: The Good Parts' });
};