Библиотека Idb-keyval представляет собой удобный интерфейс для работы с IndexedDB в браузере, упрощая операции хранения данных в ключ-значение. Важно понимать, что поведение этой библиотеки в режиме инкогнито отличается от обычного режима, так как браузеры накладывают ограничения на использование IndexedDB для защиты приватности пользователя.
В большинстве современных браузеров режим инкогнито реализуется через временное хранилище. IndexedDB в этом режиме:
Перед выполнением операций записи рекомендуется проверить, доступно ли хранилище. В Idb-keyval это можно сделать с помощью попытки установки и получения временной записи:
import { set, get } from 'idb-keyval';
async function testIdbAvailability() {
try {
await set('__test_key__', 'test');
const value = await get('__test_key__');
if (value === 'test') {
console.log('IndexedDB доступен');
}
} catch (err) {
console.warn('IndexedDB недоступен в этом режиме', err);
}
}
Такой подход позволяет безопасно определить, можно ли использовать Idb-keyval для хранения данных в текущей сессии.
undefined.try/catch для перехвата возможных исключений при записи или
чтении.localStorage или
серверные решения, так как IndexedDB в инкогнито ненадежен для
долговременных данных.import { se t, get, del } from 'idb-keyval';
async function sessionCacheExample() {
try {
await set('sessionData', { user: 'Alice', auth: true });
const data = await get('sessionData');
console.log('Данные сессии:', data);
// Очистка при завершении процесса
await del('sessionData');
} catch (err) {
console.error('Ошибка работы с IndexedDB:', err);
}
}
В этом примере данные хранятся только во время текущей сессии и безопасно удаляются, обеспечивая соответствие ограничениям режима инкогнито.
Понимание этих особенностей позволяет использовать Idb-keyval даже в режиме инкогнито, но с учетом его ограничений на долговременное хранение.