Как остановить удаление базы данных HTML 5 в iOS 5.1 - PullRequest
4 голосов
/ 19 марта 2012

Это в основном тот же вопрос, что и , этот , за исключением того, что я не использую PhoneGap (поэтому я не думаю, что какое-либо из предложенных там решений применимо).

У меня есть чистое веб-приложение HTML / JS, которое работает в автономном режиме (с использованием WebSQL для хранения и AppCache для автономного использования).

В приложении есть опция экспорта, которая сериализует данные в формате JSON и загружает их в корзину AWS S3 для резервного копирования; и соответствующий вариант импорта для восстановления. Однако, поскольку это полный дамп / восстановление всей базы данных, процесс не такой быстрый, поэтому обычно я делаю резервные копии еженедельно.

Как и ожидалось, обновление OTA с iOS 5 до 5.1 удалило мою локальную базу данных webSQL , но я смог успешно восстановить данные с S3 (к счастью, я только что сделал резервную копию до модернизация).

К сожалению, после нескольких недель работы с iOS 5.1, он снова решил, что ему нужно место, и удалил мой webSQL db . Опять же, мне повезло, что это произошло сразу после моего регулярного еженедельного резервного копирования; но я обеспокоен тем, что, если это станет обычным явлением (iOS удалит эту «временную» базу данных, чтобы освободить место), не пройдет много времени, прежде чем я поймаю, не сделав резервную копию в течение нескольких дней.

Я планирую в конце концов отказаться от уже не существующего WebSQL и использовать IndexedDB; но, конечно, iOS еще не поддерживает IndexedDB . Я также планирую изменить процесс экспорта / импорта в моем приложении так, чтобы вместо полного дампа / восстановления он просто синхронизировал любые измененные записи с S3 (чтобы резервное копирование на S3 было меньше хлопот, и, следовательно, может быть сделано чаще, чем еженедельно).

В то же время, существуют ли какие-либо хаки / обходные пути / хитрости для обеспечения того, чтобы база данных WebSQL не очищалась iOS 5.1 ; или есть какой-либо способ, которым я могу предсказать, когда может произойти очистка , чтобы я мог попытаться выгрузить его, запустив экспорт для резервного копирования моих данных?

1 Ответ

0 голосов
/ 13 апреля 2012

Решения, предлагаемые сообществом PhoneGap, безусловно применимы.Для нас код в https://issues.apache.org/jira/browse/CB-330?focusedCommentId=13237796&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13237796 работал лучше всего для нас, если он вызывался до инициализации любого WebView (т. Е. В методе init () вашего приложения), а также вызывал его после инициализации WebView.

Приведенный выше связанный код перемещает базу данных в безопасное место, а также редактирует настройки WebKit для ссылки на новое местоположение.Его необходимо запустить дважды, чтобы переместить и обновить существующие базы данных перед загрузкой WebKit и обновлением до нового местоположения после загрузки WebKit (поскольку WebKit создаст настройки, указывающие на неправильное / небезопасное местоположение)

...