localForage при инициализации не фиксируется на одном механизме хранения данных, а использует стратегию автоматического выбора драйвера в зависимости от возможностей среды выполнения. Основная цель этой логики — обеспечить максимальную совместимость между браузерами и гарантировать работоспособность API даже в условиях ограниченной поддержки современных хранилищ.
При отсутствии явного указания драйвера библиотека использует предопределённый порядок предпочтений:
Эта последовательность отражает баланс между производительностью, функциональностью и широтой поддержки.
IndexedDB рассматривается как основной вариант благодаря асинхронной природе, отсутствию блокировки основного потока и возможности работы с большими объёмами структурированных данных.
WebSQL используется как промежуточный вариант, актуальный в браузерах, где IndexedDB отсутствует или работает нестабильно. Несмотря на устаревший статус, он остаётся более производительным, чем синхронный localStorage.
localStorage выступает как крайний резервный механизм, обладающий наименьшей функциональностью и синхронной моделью доступа, что делает его менее предпочтительным.
Перед активацией каждого драйвера localForage выполняет проверку его доступности. Этот процесс включает:
Если драйвер не проходит проверку, он исключается из цепочки выбора, и система переходит к следующему варианту.
Автоматический выбор реализован как последовательный перебор доступных драйверов по приоритету. Логика можно описать следующим образом:
Такой подход обеспечивает предсказуемость поведения при сохранении гибкости.
В localForage существует возможность явно задать предпочтительный драйвер через конфигурацию. В этом случае автоматический выбор модифицируется:
Таким образом, конфигурация не отменяет автоматический механизм, а влияет на его начальную точку.
Метод установки драйвера принудительно переопределяет текущий выбор. В отличие от автоматической инициализации:
Это важно в сценариях, где требуется динамическое переключение между разными механизмами хранения.
Автоматический выбор драйвера в localForage зависит от окружения:
Браузеры с полной поддержкой IndexedDB Используется IndexedDB без перехода к альтернативам.
Старые браузеры При отсутствии IndexedDB активируется WebSQL, если он доступен.
Ограниченные режимы (инкогнито, строгие политики безопасности) Возможен пропуск IndexedDB и WebSQL, с переходом на localStorage.
Среды с ограниченным API Storage При невозможности использования всех драйверов инициализация может завершиться ошибкой.
Выбор драйвера выполняется асинхронно, поскольку каждая проверка включает операции записи и чтения. Это означает, что:
ready() или
аналогичного механизма;При создании изолированного экземпляра localForage каждый экземпляр проходит собственный цикл выбора драйвера. Это означает:
Несмотря на автоматический характер выбора, результат остаётся детерминированным при одинаковых условиях среды:
Такая предсказуемость важна для построения устойчивых приложений, зависящих от локального хранения данных.