POS的离线数据库支持

时间:2013-01-24 07:22:50

标签: php mysql html5 indexeddb breeze

我一直在开发这个销售点系统已近一个月,并一直在寻找一种方法来为我的应用程序实现离线支持。我想使用IndexedDB但在最初应该将哪些数据加载到应用程序时遇到问题。

让我给你一个场景。

我开始了一项交易并输入了一些项目。不幸的是,当我处于交易过程中时,Thor的愤怒毁坏了一座塔,导致网络断开。

在这种情况下,我应该如何构建我的应用程序?

一个。将所有条目直接放入MySQL数据库,并使用IndexedDB进行脱机条目。 (问题:断开连接后永远不会返回初始条目。)

B中。使用HTML5作为收银员交易的主数据库,并在成功结账后将其仅转移到MySQL数据库。 (问题:系统负载时会有大量数据存储到IndexedDB。)

我正在考虑选项B,但无法找到一种方法来最小化来自MySQL数据库的预加载数据的大小。为什么我需要加载这些数据?标识该项目的唯一方法是通过项目代码。我在MySQL数据库中有数千个项目并将它们加载到IndexedDB中是过度的。我需要在进入时获取每个项目的描述,单价,税率,折扣率,促销可用性和库存数量。实时监控也至关重要。如果所有这些数据都被加载到IndexedDB,那么5mb是不够的。

非常感谢您的回复!

1 个答案:

答案 0 :(得分:1)

要启动它是本地存储有5mb限制,Indexeddb没有限制,虽然浏览器能够限制它,当然你的硬盘空间也是一个限制:)。

第二:如果您真的希望应用程序完全脱机工作,我只会使用indexeddb。 (例如,当您离线时启动Web应用程序并对其进行更改。)

我认为如果连接断开,你想要的只是一个后备,但几分钟之后你就可以同步了。在这种情况下,我会将数据保存在内存中。这将减轻您保持在线和离线数据库同步的痛苦。当然,如果您真的想要提供离线Web应用程序,则需要indexeddb API。

看看upshot.js和BreezeJS。这是用于跟踪实体的库。当你在短时间内失去连接时,这些框架也有一些后备(比如将数据保存在内存中)。

简而言之,是否选择indexeddb取决于:

的需要
  • 数据需要离线可用
  • 即使您关闭Web应用程序并在一段时间后重新启动它,也必须保持更改。

希望这能回答你的问题。