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

在HTML5 iOS应用程序中安全存储数据-localStorage/WebSQL/IndexedDB是否合适?,ios,html,local-storage,web-sql,indexeddb,Ios,Html,Local Storage,Web Sql,Indexeddb,我正在编写一个HTML5应用程序,我想在iOS应用商店上发布。使用PhoneGap或包装在UIWebView控件中 在为我的应用程序存储数据方面,我有点困惑我有什么选择 使用localStorage、WebSQL或IndexedDB技术是否适合在此类应用程序中存储应用程序数据?我将存储JSON和XML数据 请记住,如果用户无意中删除了这些数据,那么他们将丢失工作,这显然是我不希望发生的 我明白,减轻这种风险的唯一真正方法是将数据同步到“云”或其他在线系统——我可以在未来的版本中这样做,但现在不行

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

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

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

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

我明白,减轻这种风险的唯一真正方法是将数据同步到“云”或其他在线系统——我可以在未来的版本中这样做,但现在不行。最初,如果这是一种合理、稳定的方式,我只想将数据存储在本地

据我所知,在清除cookies时,浏览器还将清除所有本地存储数据。这就排除了这一点,因为我可以看到用户这样做是偶然的

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

但WebSQL的缺点是,从我所读到的内容来看,将来可能不支持它

对于IndexedDB,我不清楚数据何时被清除。当cookies被删除时,它是否也会被删除,或者Safari设置中的“数据库”选项是否会控制这一点

IndexedDB是否是更好的解决方案,因为它在未来将比WebSQL有更好的支持


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

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

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

我看他们有几年没有放弃WebSQL了。HTML5规范甚至还没有被批准,所以事情可能会再次改变

由于您只是存储字符串,您可以签出像Lawnchair这样的库,它们将使用不同的适配器(localStorage、WebSQL等)来按您的意愿存储数据,因为您似乎没有复杂的数据集。

localStorage
(又称Web存储)除Opera Mini外,所有当前移动浏览器都支持WebSQL和WebSQL

然而,截至2010年11月,WebSQL被认为已经“死亡”。规范上有一个大大的“小心”标签:

本文档已进入W3C推荐轨道,但规范工作已停止。规范陷入了僵局: 所有感兴趣的实现者都使用了相同的SQL后端(Sqlite), 但我们需要多个独立的实现才能沿着一条路线前进 标准化路径

就移动浏览器而言,截至2013年12月,IndexedDB仅在Android 4.4中受支持(这意味着没有iOS Safari、Opera Mini/mobile或广泛的Android浏览器支持)


有关最新的兼容性表,请参阅。

谢谢,我不知道如果使用包装器库,存储将被分割到该应用程序。这就解决了我的问题。window.localStorage是5 Mb,但由于iOS将数据存储为UTF-16,因此它实际上是2.5 Mb。此外,localStorage无法在iOS上增长。@Stevo3000您可以通过将字符串转换为UTF-8来解决这一问题,UTF-8只是使用JavaScript编写的几行代码。