cordova - PhoneGap 使用什么数据库以及大小限制是多少?

标签 cordova mobile offline

我编写了一个 HTML5 数据库,它抽象了 localStorage、indexedDB 和 WebSQL。使用直接 HTML5 我的数据库选项如下所示:

  • IE10 - indexedDB - 最大 1GB
  • FireFox - indexedDB - 无限制
  • Safari - WebSQL - 最大 50MB
  • Chrome - IndexedDB(或 Web SQL) - 无限制(使用 HTML5 配额 API ref1ref2 )
  • Opera - WebSQL(直到他们切换到 webkit?) - 无限制

我想使用 PhoneGap 或 Quota API 扩展最大数据库大小。从 PhoneGap 的文档来看,它看起来像当前的 PhoneGap database ecosphere是:

  • WebSQL - Android、Blackberry、iPhone 和 webOS
  • 本地存储 - Windows Phone 7
  • indexedDB - Windows Phone 8而且,我猜,indexedDB 可用但 WebSQL 不可用。

还有 PhoneGap SqlLite 插件。 iOS , Android , Windows Phone 8+

<小时/>

问题 1 - 我对 PhoneGap 将使用什么数据库的理解准确吗?

问题 2 - 是否有任何可靠的文档说明给定类型的 PhoneGap 数据库将存储多少数据? *如果它是 PhoneGap 数据库而不是浏览器数据库实现。

问题 3 - PhoneGap 是否计划遵守 Web Storage standards从而放弃 WebSQL 而转而使用 indexedDB?如果是这样,一旦切换到 indexedDB,我是否仍然能够使用现有的 WebSQL 代码(通过内置的 PhoneGap-polyfill)?

问题 4 - 在数据库大小有限且无法通过 PhoneGap 或 Quota API 扩展但可以访问文件系统的情况下,假设“额外”是否合理数据可以存储在设备的文件系统或 SD 卡上吗?

最佳答案

Is my understanding of what database PhoneGap will use accurate?

是的。 PhoneGap 可以使用 LocalStorage、SessionStorage 或 SQLite 数据库。您还可以选择使用 PhoneGap 通过插件连接到设备 native 类,并传递 native 类数据,然后将其存储在设备上。

Is there any solid documentation about how much data a PhoneGap database of a given type will store? If it is a PhoneGap database and not the browsers database implementation.

  1. 本地存储::10MB
  2. session 存储::10MB
  3. SQLite 数据库::50MB-80MB(取决于设备)
  4. 使用插件调用的原生数据库::无限数据量
  5. IndexedDB::5MB。依然存在。但非常有问题,theres a list of devices/OS's that run it here

Does PhoneGap have plans to adhere to the the Web Storage standards thereby dropping WebSQL in favor of indexedDB? If so, will I still be able to use my existing WebSQL code (via a built in PhoneGap-polyfill) once the switch to indexedDB is made?

WebSQL 正在慢慢被弃用。它的替代品是 IndexedDB 或 SQLite。然而,最适合您的选择是 SQLite 或 native 数据库(例如 iOS 上的 Core Data)

In situations where database size is limited and cannot be expanded by either PhoneGap or the Quota API, but access to the file system is available, is it reasonable to assume that "extra" data could be stored on the device's file system or on a SD card?

这绝对是可能的。

  • 在 Android 上,您可以指定数据库的位置,从而将数据推送到外部数据库。
  • 在iOS上,您可以使用原生数据库调用将数据存储在CoreData上,没有外部存储器。
  • 在所有操作系统的所有情况下,您都可以创建一个平面数据库文件(如文本文件),将数据存储在键值列表中,然后在首次运行时将其拉入您的应用程序。在这种情况下要注意内存管理。

我在 my answer 中添加了如何对 SQLite 和 LocalStorage 数据库进行编码的说明.

关于cordova - PhoneGap 使用什么数据库以及大小限制是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15707201/

相关文章:

Jquery移动和PhoneGap : Reload page to get next item in database

CSS 移动网站 - 为什么值这么高?

c++ - 如何以编程方式激活 Windows Mobile 中的菜单

ios - Google Maps SDK 离线使用

android - Cordova APK 首次运行时不请求权限

android - 将值从一个 Activity 检索到另一个 Activity 时导致应用程序崩溃

heroku - Heroku网站显示 'Offline for Maintenance. This app is undergoing maintenance right now. Please check back later'

javascript - 通过组合 pdf.js 和 pdf.worker.js 创建 pdf.js 的离线版本

javascript - JQuery Mobile JS 脚本第一次运行但返回页面时不运行

html - 100% 宽度的 Css 问题仅在移动 safari 上