本地服务器中的存储<>关系数据库



我做了一个简单的web应用程序,它完全离线运行-所有数据都保存在HTML5的localStorage中。现在,我希望数据与服务器同步,以便用户能够同时在多个设备上使用该应用程序。

到目前为止我所做的是:

对于用户执行的每一个操作,都添加一个日志条目。当用户在线时,所有日志都通过AJAX从localStorage传输到PHP。在SQL数据库中进行相应的更改。删除localStorage中的所有日志。因此,所有的localStorage数据都在服务器上得到了正确的"备份"。

无论如何,从一个设备所做的更改不会反映到另一个设备,反之亦然,要做到这一点,我们必须从SQL到localStorage获取一些数据。

现在,我的问题是,什么是合适的和最好的方法来做到这一点?

在以上四个步骤之后,我是否

  1. 清除所有localStorage数据并保存SQL数据到localStorage。

  2. 在数据库中保存更改的日志,并在localStorage上执行。

  3. 其他方法

还有,时间戳呢?如果有冲突怎么办?

这取决于你想要同步数据的逻辑。

如果你想复制本地存储数据到服务器,那么你应该设置一些标志,表示你已经准备好接受数据。

如果您的服务器有更新的副本(较新的版本),那么首先更新的数据应该复制到您的本地存储。等等......然后再次将同步从本地更改为服务器。

无论如何,这取决于你想要从服务器同步到本地或本地同步到服务器的数据。

我会说使用第一种方法。清除所有localStorage数据,并将SQL数据保存到localStorage。

因为无论何时本地复制到服务器。服务器将有新的副本,其他设备将有过时的数据。需要通过清除数据并将SQL数据保存到localStorage来同步数据

我最近在开发chrome扩展时遇到了类似的问题。你应该去看看胡德。ie(建立在Node.js和CouchDB之上),它会自动为你完成这项工作。

默认为离线。这意味着它首先在本地存储数据,并在可能的情况下在后台同步数据。您不必担心互联网连接和发送数据时可能发生的异常。您可以通过事件自动订阅远程数据库中的更改,以更新本地配置。

此外,它有内置的用户管理系统,所以这意味着发送到数据库的数据在登录用户中被沙盒化。您可以在选定的用户之间共享部分数据,甚至可以通过API访问他们的所有数据(如果启用)。

网站上说胡德。它还处于早期发展阶段。最近我和一些作者聊了聊,他们说现在它已经足够稳定,可以在生产环境中尝试一下了。经过几周的尝试,我没有遇到任何问题。

最新更新