В драйвере WebSQL параметр size задаёт предполагаемый размер базы данных, который библиотека использует при создании хранилища через WebSQL API. Это значение не является динамическим лимитом и не увеличивает реальную квоту браузера, но служит подсказкой для инициализации базы и резервирования пространства.
WebSQL требует указания предполагаемого размера базы при её открытии:
openDatabase(name, version, displayName, estimatedSize, callback)
Параметр size в localForage напрямую транслируется в estimatedSize. Он выражается в байтах и используется браузером для оценки объёма дискового пространства, которое может понадобиться базе данных.
Ключевые особенности поведения:
openDatabase, но не гарантирует
выделение указанного объёма;size всегда указывается в байтах:
Типичные значения, используемые в практике:
Если size не задан, localForage использует значение по умолчанию, которое зависит от версии библиотеки и драйвера. В WebSQL это может приводить к:
Хотя WebSQL считается устаревшим стандартом, его модель хранения всё ещё учитывает предварительную аллокацию. size влияет на:
Важно учитывать, что реальное пространство не резервируется полностью — браузер работает по модели «lazy allocation», выделяя место по мере необходимости.
Параметр передаётся через конфигурацию:
import localforage from "localforage";
localforage.config({
name: "appStorage",
storeName: "keyvaluepairs",
version: 1,
size: 10485760
});
После инициализации драйвера значение size становится частью параметров открытия WebSQL-базы.
Изменение size после создания базы не приводит к пересозданию хранилища. WebSQL:
Чтобы применить новый size, требуется:
Разные движки по-разному трактуют size:
Таким образом, size следует рассматривать как ориентир, а не как гарантию.
Выбор size зависит от предполагаемого сценария хранения:
Избыточно большое значение не ускоряет работу и не увеличивает доступную квоту, но может повлиять на поведение браузера при первом открытии базы.
Параметр size применяется только в WebSQL. В других драйверах:
При переключении драйвера через setDriver значение
остаётся в конфигурации, но не имеет эффекта:
localforage.setDriver(localforage.INDEXEDDB);
При выборе WebSQL-драйвера библиотека:
openDatabase;Дальнейшие операции getItem/setItem не зависят от этого параметра и работают через стандартные SQL-запросы, абстрагированные внутри драйвера.