Произошли ли недавно изменения в управлении квотами Android Chrome для IndexedDB? Я использую PouchDB с адаптером IndexedDB в приложении Ionic 3 Cordova. Все прошло довольно гладко за последние 6 месяцев. Но за последние 5 дней я получил значительное количество жалоб на некорректную загрузку данных в приложении. Мое приложение требует только 3-4 МБ данных. Вот что я знаю до сих пор:
- Проблема возникает только в ситуациях с нехваткой места на диске во внутреннем хранилище (даже если приложение установлено на SD-карте)
- У уязвимых устройств почти всегда есть только 16 ГБ внутреннего дискового пространства, и они кажутся постоянно заполненными
- Освобождение дискового пространства решает проблему
- Кажется, что есть резкое ограничение для квоты для IndexedDB, когда устройство работает ниже 150-250 МБ или около того. Если освобождаются дополнительные 100-200 МБ, выделенная квота неожиданно возрастает до 50 МБ или более
- Похоже, что в Chrome или Android недавно произошли изменения, которые привели к возникновению этой проблемы, потому что мое приложение не получало обновления в последнее время и даже затрагивает новых пользователей только с несколькими КБ данных.
Я также подозревал, что, возможно, люди делали больше фотографий в последние дни, потому что погода была довольно хорошей, что приводило к уменьшению свободного места на диске и, таким образом, к увеличению числа зарегистрированных ошибок. Но я все равно нашел бы это странное объяснение.
Кто-нибудь еще заметил подобные проблемы в своих приложениях? Какие-нибудь решения кроме перехода на Cordova-SQLite?
Обновление 2018-05-03:
Я понял еще несколько вещей:
- Для устройств почти всегда требуется больше 1 ГБ свободного внутреннего хранилища. 500 МБ больше не достаточно
- Если вы планируете перейти на SQLite с PouchDB, прочитайте комментарии к этому вопросу. Могут быть проблемы с вложениями.
- Если вы используете Ionic Storage (на основе LocalForage), он автоматически переключится на SQLite после установки плагина. В моем случае это привело к ошибкам в базе данных, и мне пришлось переключить
drivers
для хранилища Ionic: driverOrder: ['localstorage', 'indexeddb', 'sqlite', 'websql']