这基本上与这个问题相同,只是我没有使用 PhoneGap(所以我认为那里提供的任何解决方案都不适用)。
我有一个可以离线工作的纯 HTML/JS webapp(使用 WebSQL 进行存储,使用 AppCache 进行离线使用)。
该应用程序有一个“导出”选项,可将数据序列化为 JSON 并将其上传到 AWS S3 存储桶进行备份;以及用于恢复的相应“导入”选项。但是,由于这是整个数据库的完整转储/恢复,因此该过程并不是那么快,因此通常我每周备份一次。
正如预期的那样,从 iOS 5 到5.1 的 OTA 升级删除了我的本地 webSQL 数据库,但我能够成功地从 S3 恢复数据(幸运的是,我刚刚在升级前做了备份)。
不幸的是,在运行 iOS 5.1 几周后,它再次决定需要空间,并删除了我的 webSQL db。再次,我很幸运,这发生在我每周定期备份之后;但我担心如果这种情况经常发生(iOS 删除这个“临时”数据库以回收空间),不久之后我就会因为几天没有备份而陷入困境。
我计划最终摆脱现在已经失效的 WebSQL,并使用 IndexedDB;但当然iOS 还不支持 IndexedDB。我还计划修改我的应用程序中的导出/导入过程,这样它就不会进行完全转储/恢复,而是将所有更改的记录与 S3 同步(这样备份到 S3 的麻烦就更少了,因此很可能比每周更频繁)。
同时,是否有任何黑客/解决方法/技巧来确保 iOS 5.1 不会清除 WebSQL 数据库;或者有什么方法可以预测何时可能发生清理,以便我可以尝试通过运行导出来备份我的数据来抢占它?