在HTML5 iOS应用程序中安全存储数据 - localStorage/WebSQL/IndexedDB是否合适?

asg*_*eo1 14 html5 local-storage ios web-sql indexeddb

我正在编写一个我想在iOS应用商店中发布的HTML5应用程序.使用PhoneGap或包装在UIWebView控件中.

我在为应用程序存储数据方面有什么选择,我有点困惑.

是否使用适合在此类应用程序中存储应用程序数据的localStorage,WebSQL或IndexedDB技术?我将存储JSON和XML数据.

请记住,如果用户无意中删除了这些数据,那么他们将失去工作,这显然是我不想发生的.

我知道减轻这种风险的唯一真正方法是将数据同步到"云"或其他在线系统 - 我可以在将来的版本中执行此操作,但现在不能.最初我只想在本地存储数据,如果这是一种合理稳定的做事方式.

根据我的理解,当清除cookie时,浏览器也将清除任何localStorage数据.因此,我可以看到用户意外地执行此操作的规则.

WebSQL看起来很不错 - 用户无法在iOS上无意中删除它.他们实际上必须进入浏览器设置并手动删除数据库.

但是WebSQL的缺点在于,未来我可能不会支持它.

使用IndexedDB,我不清楚何时清除该数据.删除cookie时是否也会删除它,或者Safari设置中的"数据库"选项是否会控制它?

IndexedDB是更好的解决方案,因为它将来会比WebSQL提供更好的支持吗?

还有其他更合适的解决方案我不知道吗?

小智 11

如果你使用PhoneGap(或AppMobi - 我工作的地方)进行包装,你的数据将被分段到该应用程序.用户无法进入Safari并清除浏览器数据/ cookie,并在您的应用中发生这种情况.他们可以删除它的唯一方法是删除应用程序.

我不认为IndexedDB是可用的.Window.localStorage是(5兆,但我认为它可以增长),这是一个KVP系统.

我没有看到他们放弃WebSQL几年.HTML5规范尚未批准,因此事情可能会再次发生变化.

由于您只是存储字符串,因此可以查看像Lawnchair这样的库,它们将使用不同的适配器(localStorage,WebSQL等)来存储您的数据,因为它看起来没有复杂的数据集.

  • window.localStorage是5 Mb,但由于iOS将数据存储为UTF-16,因此它的效率为2.5 Mb.localStorage也无法在iOS上增长. (2认同)

bul*_*ley 7

localStorage 除Opera Mini之外的所有当前移动浏览器都支持(又名Web Storage)和WebSQL.

然而,WebSQL在2010年11月被认为是"死亡".该规范上有一个很大的"小心"标签.它写道:

该文档在W3C推荐的轨道上,但规范工作已经停止.规范陷入了僵局:所有感兴趣的实现者都使用了相同的SQL后端(Sqlite),但我们需要多个独立的实现来继续标准化路径.

至于移动浏览器,IndexedDB - 截至2013年12月 - 仅在Android 4.4中支持(意味着没有iOS Safari,Opera Mini /移动或广泛的Android浏览器支持).

有关最新的兼容性表,请参见caniuse.com.