Подтвердить что ты не робот

Обнаружение доступного хранилища с помощью IndexedDB

Я написал автономное приложение, которое использует IDB для хранения изображений и текста, которые обычно существуют в базе данных MySQL для автономного использования.

Однако я пытаюсь выяснить способ, которым я могу прочитать ограничение на хранилище устройств для IndexedDB. В настоящее время я использую следующий метод для определения этого, хотя он работает только в Chrome.

Я использую фрагмент отсюда qaru.site/info/200389/..., который получает storageInfo для WebKit, однако, если кто-то знает способ получить его на FF и IE и более конкретно Safari, что было бы здорово.

Из того, что я собрал, возвращается используемая квота для всего, что хранится в этом браузере для домена, а не только для IDB. Однако то, что я использую, - это остаточная квота. Из этого я либо выполняю запрос AJAX на сервер, чтобы получить оценочный размер всех файлов, которые будут храниться и работать, если есть достаточное количество хранилища, или я буду рассчитывать сумму, хранящуюся в IDB, и работать, если этого достаточно для магазин больше.

Мне было интересно, есть ли у кого-то более "обтекаемый" подход? И способ проверить остаточную квоту в FF/IE и особенно Safari и даже способ проверки квоты для IDB специально.

4b9b3361

Ответ 1

Единственный API, доступный в настоящее время и только для хром, - navigator.webkitTemporaryStorage.queryUsageAndQuota().

Firefox имел планы для реализации этого API тоже.

Существуют также два экспериментальных API navigator.storageQuota.queryInfo(type) и navigator.storage.estimate(), если вы используете chrome с --enable-experimental-web-platform-features. Подробнее здесь: https://groups.google.com/a/chromium.org/forum/#!searchin/blink-dev/quota-api/blink-dev/P6eY26vB91c/Ri4ohXOPBQAJ

Я думаю, что наиболее интересным является API квоты на хранение(). Это еще черновик, но chrome и mozilla в настоящее время реализует этот API.

К сожалению, в настоящее время нет общедоступной информации, если и Edge, и Safari будет реализовывать этот API.

В настоящее время Edge имеет совсем другую модель для квоты - а не предел целого происхождения, каждый тип хранилища (индексированный db, локальное хранилище и т.д.) имеет собственный предел.

Обновление: Эта функция была добавлена ​​в Chrome 52 (экспериментальный флаг) и Firefox 51 (ночной) navigator.storage.estimate().then((data)=>console.log(data)) // Object { quota: 2147483648, usage: 0 }