【问题标题】:localStorage <-> Relational Database in the serverlocalStorage <-> 服务器中的关系数据库
【发布时间】:2014-05-08 05:07:27
【问题描述】:

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

到目前为止我所做的是:

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

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

现在,我的问题是什么是合适和最好的方法?

经过上面的四个步骤,我是不是

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

  2. 记录在数据库中所做的更改,并在 localStorage 上进行。

  3. 任何其他方法。

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

【问题讨论】:

    标签: php sync backend


    【解决方案1】:

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

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

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

    该网站称 Hood.ie 处于早期开发阶段。我最近和作者聊天,他们说现在它足够稳定,可以在生产环境中尝试一下。在玩了几个星期之后,我没有遇到任何问题。

    【讨论】:

      【解决方案2】:

      何时同步数据取决于您的逻辑。

      如果您想将本地存储数据复制到服务器,那么您应该制作一些标志,表明您已准备好过度接受数据。

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

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

      更新

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

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

      【讨论】:

        猜你喜欢
        • 2020-07-25
        • 2020-12-14
        • 1970-01-01
        • 2021-03-30
        • 1970-01-01
        • 1970-01-01
        • 2019-12-03
        • 2011-04-11
        • 2012-04-21
        相关资源
        最近更新 更多