Параметры createInstance

Метод createInstance формирует изолированный экземпляр хранилища с собственной конфигурацией, не влияющей на глобальные настройки localForage. Каждый экземпляр может использовать отдельное имя базы, отдельное хранилище и набор драйверов, что позволяет сегментировать данные внутри одного приложения.

Конфигурация передаётся в виде объекта, где каждое поле управляет поведением создаваемого экземпляра. Все параметры опциональны, но их комбинации определяют, как именно будет организовано хранилище.


Общая структура конфигурации

const store = localForage.createInstance({
  name: 'appName',
  storeName: 'keyValueStore',
  driver: [localForage.INDEXEDDB, localForage.WEBSQL],
  version: 1.0,
  size: 4980736,
  description: 'Main application storage'
});

Каждое свойство влияет на отдельный аспект работы драйвера и структуры хранилища.


name — имя базы данных

Тип: string Назначение: определяет имя базы данных (или namespace) в зависимости от драйвера.

Поведение

  • В IndexedDB формирует имя базы данных.
  • В WebSQL влияет на имя базы.
  • В localStorage используется как префикс ключей.

Особенности

  • Разные экземпляры с одинаковым name, но разными storeName используют одну физическую базу.
  • Изменение name полностью изолирует данные.

storeName — имя хранилища

Тип: string Назначение: определяет логическое хранилище внутри базы данных.

Поведение в разных драйверах

  • IndexedDB: object store
  • WebSQL: таблица
  • localStorage: часть ключевого пространства

Ограничения

  • Должно быть уникальным внутри одного name.
  • Используется как основной сегмент изоляции данных.

Влияние на архитектуру

Использование нескольких storeName внутри одного name позволяет строить модульную систему хранения: например, отдельные хранилища для пользователей, кэша и настроек.


driver — список предпочтительных драйверов

Тип: Array<string> Назначение: задаёт порядок предпочтения механизмов хранения.

Возможные значения

  • localForage.INDEXEDDB
  • localForage.WEBSQL
  • localForage.LOCALSTORAGE

Принцип работы

При инициализации выбирается первый доступный драйвер из списка. Если первый недоступен, выполняется переход к следующему.

Пример поведения

driver: [
  localForage.INDEXEDDB,
  localForage.LOCALSTORAGE
]
  • сначала пробуется IndexedDB;
  • при ошибке или отсутствии поддержки используется localStorage.

Важная особенность

Порядок элементов определяет стратегию деградации функциональности.


size — предполагаемый размер хранилища

Тип: number Назначение: задаёт ожидаемый объём данных (в байтах), преимущественно для WebSQL.

Поведение

  • В IndexedDB игнорируется большинством браузеров.
  • В WebSQL может использоваться как лимит или рекомендация.
  • В localStorage не применяется.

Практическое значение

Используется как метаданные для резервирования пространства и оптимизации работы базы.


version — версия структуры базы

Тип: number Назначение: определяет версию схемы хранилища.

Поведение

  • При изменении версии IndexedDB инициирует обновление структуры.
  • Может использоваться для миграции данных.
  • В WebSQL влияет на пересоздание таблиц.

Применение

Версия используется для управления изменениями структуры данных без потери совместимости между релизами приложения.


description — описание базы

Тип: string Назначение: текстовое описание назначения хранилища.

Характеристика

  • Не влияет на работу API.
  • Сохраняется как метаданные (в IndexedDB может быть проигнорировано некоторыми реализациями).
  • Используется для документирования структуры базы.

Наследование глобальной конфигурации

Экземпляр, созданный через createInstance, наследует глобальные настройки localForage, если параметры не переопределены.

Принцип приоритета

  1. Параметры, переданные в createInstance
  2. Глобальная конфигурация localForage.config
  3. Значения по умолчанию драйвера

Изоляция экземпляров

Каждый экземпляр, созданный через createInstance, полностью изолирован в рамках:

  • собственного name
  • собственного storeName
  • собственного набора драйверов

Последствия изоляции

  • ключи не пересекаются между экземплярами;
  • очистка одного экземпляра не затрагивает другие;
  • миграции версий выполняются независимо.

Валидация параметров

name и storeName

  • не должны быть пустыми строками;
  • рекомендуется избегать спецсимволов, зависящих от драйвера.

driver

  • должен содержать только поддерживаемые константы;
  • порядок имеет критическое значение.

version

  • должен быть числом;
  • увеличение значения инициирует обновление схемы.

Поведение при некорректной конфигурации

  • некорректный driver приводит к fallback на доступные механизмы;
  • отсутствие доступных драйверов вызывает ошибку инициализации;
  • конфликт storeName может привести к перезаписи данных в рамках одной базы.

Влияние конфигурации на производительность

IndexedDB

  • оптимален при больших объёмах;
  • name и storeName влияют на структуру индексов.

WebSQL

  • чувствителен к size и структуре таблиц.

localStorage

  • ограничен объёмом и синхронной природой;
  • driver влияет на fallback при перегрузке.

Сценарии конфигурационного разделения

Изолированные домены данных

Разделение на несколько экземпляров:

  • пользовательские данные
  • кеш API
  • временные данные

Многоуровневая архитектура

Использование разных driver списков:

  • основной слой: IndexedDB
  • резервный слой: localStorage

Особенности взаимодействия параметров

  • name + storeName формируют уникальный идентификатор пространства;
  • driver определяет стратегию доступа;
  • version управляет жизненным циклом структуры;
  • остальные параметры выступают как метаданные или оптимизационные подсказки.