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

Ограничения хранилища в браузере Chrome

Каков мягкий предел (на который пользователь должен давать разрешение превышать)? Какой жесткий предел (максимально допустимый).

4b9b3361

Ответ 1

Предупреждение - эта информация устарела - см. Другой ответ ниже.

Chrome имеет мягкий предел в 5 QUOTA_ERR прежде чем он достигнет значения QUOTA_ERR. Здесь MDN ссылка на этот факт.

В спецификации упоминается QuotaExceededError но, похоже, ничего не говорится о том, когда ее следует выбросить.

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

Я не слышал о жестком пределе и не достиг такого в моем собственном развитии. Производительность должна идти довольно далеко на юг, прежде чем вы достигнете.

Ответ 2

Эмпирическое правило составляет 6% (изменение 2015-июль: 10%) доступного места на жестком диске пользователя, меньше, если ваше начало использует websql, appcache или файловую систему api. Документ MDN, в котором упоминается 5mb, устарел и обновлен. Подробные сведения о текущей политике приведены здесь: https://developer.chrome.com/apps/offline_storage

Обратите внимание на некоторые раздражающие тонкости:

  • Нет никакого PERSISTENT-хранилища для indexeddb, применяется только материал в ссылке выше о TEMPORARY.
  • Как только ваше происхождение исчерпает свою долю пула, транзакции indexeddb будут бесполезно отменены без каких-либо реальных указаний. На сегодняшний день единственным способом определить, что недостаток квоты является причиной, является использование queryUsageAndQuota, чтобы проверить, сколько осталось места. Хотелось бы надеяться, что будущая версия хром скоро заполнит IDBTransaction.error в этих случаях. Изменить: chrome 26 теперь правильно заполняет IDBTransaction.error с помощью QuotaExceededError.
  • В настоящее время нет API для запроса большего объема памяти для indexeddb.

Ответ 3

Проверить квоту с помощью следующего кода в chrome > dev tools (F12) > console

// Request storage usage and capacity left
window.webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY, 
//the type can be either TEMPORARY or PERSISTENT
function(used, remaining) {
  console.log("Used quota: " + used + ", remaining quota: " + remaining);
}, function(e) {
  console.log('Error', e); 
} );

Ответ 4

IndexedDB выделяется память из "ВРЕМЕННОГО" хранилища в Google Chrome. Временное хранилище в Chrome имеет квоту по умолчанию, равную 50% доступного дискового пространства, 20% из которых доступно для автономного приложения. Запрос большего количества квоты для временного хранилища ничего не делает.

Исходя из вышеизложенного, ответы на ваши вопросы будут:

  1. IndexedDB (в браузере Chrome) может использовать хранилище, не запрашивая его. (зная, что он выделен из временного хранилища)
  2. Запрос больше, чем ВРЕМЕННЫЙ предел хранения (20% из 50% доступных, описанных выше) ничего не выделит.

Вы можете использовать инструмент Browser Storage Abuser (процитированный в этой статье HTML5Rocks, в которой документированы результаты для разных браузеров), чтобы определить доступное временное хранилище в Chrome, который вы используете.

У меня недостаточно репутации SO, чтобы публиковать больше ссылок, но в приведенной выше статье HTML5Rocks, посвященной исследованию квот, достаточно подробностей, чтобы помочь вам определить соответствующий тип хранилища (TEMPORARY или PERSISTENT) и соответствующий механизм хранилища (если вы не обязательно обнуляете IndexedDB), который может подойти для вашего приложения.

Ответ 5

Вопрос о Chrome и тэгах IndexedDB. И я предполагаю, что речь идет о веб-сайтах, а не о расширениях или приложениях Chrome (которые позволяют неограниченное хранилище для IndexedDB).

Для веб-сайтов IndexedDB - это API для временного хранилища Chrome (источник). Таким образом, вопрос о квоте для временного хранения в Chrome.

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

  • В нормальном режиме Chrome

    • Для автономных API (кэш приложений, файловая система, IndexedDB, WebSQL):

      Если выбрано значение "должно оставаться доступным", квота для одного источника ("сайт") будет равна нулю. Значение "должно оставаться доступным" относится к пространству для свободного хранения в хранилище. Начиная с Chrome 67, это нижнее значение "2 ГиБ" и "10% от общей емкости накопителя" (источник). Как только этот предел будет достигнут, дополнительные записи во временное хранилище не будут выполнены, но существующие данные во временном хранилище не будут удалены.

      Если значение "должно оставаться доступным" еще не достигнуто, квота будет составлять 20% от общего пула (источника). Это (вероятно) означает "20% всех данных во временном хранилище, уже сохраненных Chrome, плюс все данные, которые Chrome может сохранить в локальном хранилище, не нажимая значение" должно оставаться доступным "".

    • Для API веб-хранилищ (LocalStorage, SessionStorage,…): исправлено 5 МБ (источник); Я не знаю, влияет ли это на ограничение "должно оставаться доступным", описанное выше.

  • В режиме Chrome Incognito

    • Для автономных API (кэш приложений, файловая система, IndexedDB, WebSQL): ок. 100 МБ исправлено, независимо от свободного места на накопителе (источник).
    • Для API веб-хранилищ (LocalStorage, SessionStorage,…): исправлено 5 МБ (источник).

Ответ 6

Минимальный или мягкий предел составляет 5 МБ - браузер запрашивает разрешение на сохранение данных. Максимальное хранилище - это предел вашего жесткого диска, так как все данные хранятся локально на вашем компьютерном диске. В принципе, если у вас есть 20 ГБ свободного хранилища, чем вы можете использовать все хранилище для IndexedDB.