Полная сигнатура config

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


Сигнатура метода

localForage.config(options)

или в более формализованном виде:

config(options: LocalForageOptions): void;

Метод не возвращает значение и используется исключительно для задания параметров перед работой с API setItem, getItem, removeItem и другими.


Структура LocalForageOptions

Конфигурационный объект определяет базовые параметры хранилища и его поведение в разных браузерных реализациях.

interface LocalForageOptions {
  driver?: string | string[];
  name?: string;
  storeName?: string;
  version?: number;
  size?: number;
  description?: string;
}

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


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

localForage.config({
  name: 'appDatabase'
});

name задаёт имя контейнера хранилища.

Поведение:

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

Особенности:

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

storeName — имя хранилища (object store)

localForage.config({
  storeName: 'usersStore'
});

storeName определяет внутреннюю структуру хранения.

Ограничения:

  • Только латиница, цифры и _
  • Не должен начинаться с цифры
  • Обычно ограничен спецификацией IndexedDB

Поведение:

  • В IndexedDB становится именем object store
  • В WebSQL — именем таблицы
  • В localStorage используется как часть ключа

driver — выбор механизма хранения

localForage.config({
  driver: [
    localForage.INDEXEDDB,
    localForage.WEBSQL,
    localForage.LOCALSTORAGE
  ]
});

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

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

Логика работы:

  • Перебор драйверов происходит в порядке приоритета
  • Первый доступный драйвер становится активным
  • При отсутствии всех драйверов операция завершится ошибкой

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

Позволяет строить деградируемые стратегии хранения:

  • IndexedDB — основной вариант
  • WebSQL — fallback для старых браузеров
  • localStorage — последний резерв

version — версия схемы хранения

localForage.config({
  version: 1.0
});

Назначение:

Используется преимущественно для IndexedDB.

Поведение:

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

Ограничения:

  • Не управляет миграциями автоматически
  • Требует ручной обработки изменений структуры данных

size — лимит размера (WebSQL)

localForage.config({
  size: 50 * 1024 * 1024
});

Особенности:

  • Работает только в WebSQL
  • Указывает предполагаемый размер базы в байтах
  • В IndexedDB игнорируется браузером

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

  • Может влиять на резервирование ресурсов
  • Используется как hint, а не строгий лимит

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

localForage.config({
  description: 'Storage for cached API responses'
});

Поведение:

  • Используется в WebSQL
  • В IndexedDB чаще игнорируется
  • Служит метаданными для разработчика

Полная конфигурация на практике

localForage.config({
  name: 'MyApplication',
  storeName: 'cache_store',
  driver: [
    localForage.INDEXEDDB,
    localForage.WEBSQL,
    localForage.LOCALSTORAGE
  ],
  version: 1.2,
  size: 10 * 1024 * 1024,
  description: 'Client-side cache layer'
});

Порядок применения конфигурации

Конфигурация должна быть установлена до любых операций с данными.

Поведение библиотеки при нарушении порядка:

  • может быть создано несколько независимых экземпляров
  • возможна потеря консистентности драйвера
  • часть настроек может не примениться

Влияние на драйверы

Каждый параметр config интерпретируется по-разному в зависимости от backend:

Параметр IndexedDB WebSQL localStorage
name база база префикс
storeName object store таблица ключевой namespace
version schema version игнор/частично игнор
size игнор лимит игнор
description игнор metadata игнор

Внутренний эффект вызова config

После выполнения:

localForage.config({...})

происходит:

  • пересоздание внутреннего состояния instance
  • сброс кеша драйверов
  • обновление стратегии выбора storage backend
  • подготовка будущих операций к новому namespace

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

1. Ленивая инициализация

Конфигурация не открывает хранилище сразу, а лишь подготавливает параметры.

2. Кэширование драйвера

После первого успешного доступа драйвер фиксируется.

3. Изоляция конфигураций

Разные конфигурации требуют разных экземпляров localForage:

const userStore = localForage.createInstance({
  name: 'app',
  storeName: 'users'
});

Типичные ошибки конфигурации

Использование config после операций

await localForage.setItem('key', 'value');
localForage.config({ name: 'newDB' }); // приводит к разрыву логики хранения

Некорректный storeName

storeName: '123store' // может вызвать ошибку в IndexedDB

Передача driver в неправильном порядке

Приоритет важен: первым должен идти наиболее современный драйвер.


Связь с createInstance

Хотя config задаёт глобальные параметры, альтернативный подход:

localForage.createInstance(options)

создаёт изолированный экземпляр, где конфигурация не влияет на глобальное состояние.

config — глобальная настройка createInstance — локальная настройка