Безопасное хранение данных в приложении HTML5 iOS - подходят ли localStorage / WebSQL / IndexedDB?

Я пишу приложение HTML5, которое хочу выпустить в магазине приложений iOS. Либо с помощью PhoneGap, либо в оболочке элемента управления UIWebView.

Я немного смущен тем, какие у меня есть варианты хранения данных для моего приложения.

Подходят ли для хранения данных приложения в этом типе приложения технологии localStorage, WebSQL или IndexedDB? Я буду хранить данные JSON и XML.

Имейте в виду, что если пользователь случайно удалит эти данные, он потеряет свою работу, чего, очевидно, я не хочу.

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

Насколько я понимаю, при очистке файлов cookie браузер также удаляет любые данные localStorage. Это исключает это, поскольку я вижу, что пользователи делают это случайно.

WebSQL выглядит неплохо - пользователь не может случайно удалить его на iOS. На самом деле им придется зайти в настройки браузера и удалить базу данных вручную.

Но обратная сторона WebSQL состоит в том, что он может не поддерживаться в будущем, судя по тому, что я читал.

С IndexedDB мне не ясно, когда эти данные будут очищены. Будет ли он также удален при удалении файлов cookie, или это контролируется параметром «базы данных» в настройках Safari?

Является ли IndexedDB лучшим решением, поскольку в будущем он будет иметь лучшую поддержку, чем WebSQL?

Есть ли другие более подходящие решения, о которых я не знаю?


person asgeo1    schedule 06.10.2011    source источник


Ответы (2)


Если вы используете PhoneGap (или AppMobi, где я работаю), ваши данные сегментируются в это приложение. Пользователь не может войти в Safari и очистить данные / файлы cookie браузера и сделать это в вашем приложении. Единственный способ удалить его - это удалить приложение.

Я не думаю, что IndexedDB доступен. Window.localStorage (5 мегабайт, но я думаю, что он может расти), это система KVP.

Я не вижу, чтобы они отказывались от WebSQL в течение нескольких лет. Спецификация HTML5 еще даже не ратифицирована, так что все может снова измениться.

Поскольку вы просто храните строки, вы можете проверить библиотеки, такие как Lawnchair, которые будут использовать разные адаптеры (localStorage, WebSQL и т. Д.) Для хранения ваших данных так, как вы хотите, поскольку, похоже, у вас нет сложных наборов данных.

person Community    schedule 13.10.2011
comment
Спасибо, я не знал, что при использовании библиотеки-оболочки хранилище будет сегментировано для этого приложения. Это решает мою проблему. - person asgeo1; 17.10.2011
comment
window.localStorage составляет 5 МБ, но поскольку iOS хранит данные как UTF-16, он составляет 2,5 МБ. Также localStorage не может расти на iOS. - person stevehipwell; 02.11.2011
comment
@ Stevo3000 Вы можете обойти это, перекодировав вашу строку в UTF-8, что представляет собой всего пару строк кода с использованием JavaScript. - person Matthew; 12.03.2012

localStorage (также известный как веб-хранилище) и WebSQL поддерживаются всеми текущими мобильными браузерами, кроме Opera Mini.

WebSQL, однако, считается «мертвым» по состоянию на ноябрь 2010 года. На спецификации есть большой жирный ярлык «будьте осторожны». гласит:

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

Что касается мобильных браузеров, IndexedDB - по состоянию на декабрь 2013 - поддерживается только в Android 4.4 (что означает отсутствие поддержки iOS Safari, Opera Mini / мобильных устройств или широко распространенных браузеров Android).

Последние таблицы совместимости см. На caniuse.com.

person buley    schedule 30.11.2011