(Как) я могу увеличить лимит квоты LocalStorage в Android WebView

Мне нужно увеличить лимит квоты по умолчанию для LocalStorage в Android WebView. В настоящее время я могу использовать только около 2,5 МБ. При попытке сохранить больше данных появляется quota_exceeded_err (dom exception 22).

Есть идеи или мне нужно перейти на db / файловую систему?


person NATOR    schedule 27.03.2012    source источник


Ответы (2)


Речь идет о HTML5 WebStorage DOCS

По той же теме есть много вопросов, но не для Android.

Дело в том, что HTML5 WebStorage страдает от разной реализации на разных платформах.
Комбинации настольных и мобильных платформ и браузеров различаются размером квоты памяти (дискового пространства), назначенной каждому веб-сайту (домену)

И нет, вы не можете увеличить / уменьшить пространство, выделенное для вашего приложения HTML5, такой опции нет в _ 3_ в качестве класса доступа Java для настроек Android WebKit, на данный момент ни в одной из реализаций WebKit для HTML5 WebStorage.

ссылка: http://dev.w3.org/html5/webstorage/#disk-space

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

Если вам действительно нужно большое пространство в вашем приложении HTML5 (независимо от того, работает ли оно через PhonGap, Titanium, Rhodes или другое ...), я настоятельно рекомендую вам использовать HTML Web SQL Database

Даже если в DOCS написано:

Этот документ находился на треке рекомендаций W3C, но работа над спецификациями остановлена. Спецификация зашла в тупик: все заинтересованные разработчики использовали один и тот же бэкэнд SQL (Sqlite), но нам нужно несколько независимых реализаций, чтобы продолжить путь стандартизации.

Web SQL теперь поддерживается только на устройствах Android (к чему вы и стремитесь в этом вопросе), что позволяет вам увеличивать / уменьшать выделение пространства для ваших данных.

Обратите внимание на связанный с этим вопрос:

person Marek Sebera    schedule 27.03.2012
comment
спасибо, я уже знал большую часть этого, но надеялся на чудо;) так что теперь мне придется переключить свое приложение на базу данных Web SQL ... пусть будет так! - person NATOR; 28.03.2012
comment
@NATOR извини, что не обнаружил чуда ;-) - person Marek Sebera; 28.03.2012
comment
У пользователя нет возможности увеличить этот лимит? - person Michael; 25.07.2013
comment
@MarekSebera Как вы на самом деле увеличиваете / уменьшаете выделенное пространство для ваших данных? Это моя точная проблема с банкоматом в гибридном веб-приложении. WebSettings кажется ответом, но я не уверен, как ... - person oligofren; 15.08.2013
comment
@oligofren прочтите еще раз, ответ - не WebSettings, а использование WebSQL для хранения данных вместо localStorage. - person Marek Sebera; 15.08.2013
comment
@MarekSebera Я читал это. И я имел в виду WebSQL. В обычном веб-приложении Android ограничение для баз данных WebSQL составляет примерно 8 МБ. Отличается ли это в WebView? - person oligofren; 15.08.2013
comment
вы не можете увеличивать / уменьшать пространство, выделенное для вашего приложения HTML5, это тот же случай до сих пор? - person venkatvb; 13.03.2017
comment
@venkatvb кажется таким, единственное, что имеет значение, это то, что вместо фиксированной квоты хранилища Android WebKit использует автоматическое управление квотами HTML5 / JS, что должно привести к меньшим проблемам с ограниченным пространством для хранения. Но у WebSettings есть методы. Вы можете запросить текущую квоту по https://developer.android.com/reference/android/webkit/WebStorage.html#getQuotaForOrigin(java.lang.String, android.webkit.ValueCallback<java.lang.Long>), но методы, которым ранее разрешалось устанавливать квоту, устарели с API 18, поэтому вы не можете каким-либо образом устанавливать / уменьшать / увеличивать квоту прямо сейчас. - person Marek Sebera; 13.03.2017

Я просто написал для этого минимальный скрипт: https://github.com/DVLP/localStorageDB

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

Надеюсь, вы найдете это полезным!

person Pawel    schedule 19.05.2016