Безопасное хранение данных в приложении HTML5 для iOS - подходит ли localStorage / WebSQL / IndexedDB? - PullRequest
14 голосов
/ 06 октября 2011

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

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

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

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

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

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

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

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

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

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

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

Ответы [ 2 ]

11 голосов
/ 14 октября 2011

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

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

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

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

7 голосов
/ 30 ноября 2011

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

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

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

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

См. caniuse.com для последних таблиц совместимости.

...