首页 > 解决方案 > 定期将javascript客户端数据保存到服务器数据库并保持同步的最佳方法?

问题描述

我使用 javascript 库 D3 创建了一个应用程序。用户会不断点击和拖动以频繁更改图形元素,我目前将数据保存在 3-4 个本地 javascript 对象和数组中。我想定期将数据保存到服务器,而不是在每次更改之后。另外,我希望他们能够在未连接的情况下工作。从二十年前开始,我想象手动执行此操作,在客户端记录被标记为“新”、“修订”和“已删除”。每 10 秒通过 AJAX 保存客户端数据,并更新对象或执行 SQL 语句。从数据库返回一个 id 并保存在客户端,以跟踪每条记录以供将来修改。

请注意,必须将数据组织在数据库中,以便于分离元素以供重用。当用户连接时,每 5-10 秒更新一次就可以了。然后我可以使用便宜且速度慢的服务器。当然,处理可能没有完全更新的记录的工具是好的,也许是一些事务功能。

不会有单独的移动应用程序。如果需要,我可以将我的 javascript 对象修改为 json 兼容。我看到有“离线优先”框架和 javascript“状态容器”。Redux 引起了我的注意,尤其是当我根据 Google 趋势看到它的使用多年来不断攀升时。我已经阅读了很多选项,并且对所有这些都感到非常困惑。这是我查看的工具的混搭:Store.js、now.js、indexedDB、couchDB、pouchDB、Cloudant、localForage、WebSQL、Polymer App Toolbox、Hoodie 框架、Ionic 和 Angular 以及 Loopback。更不用说 XHR,网络套接字了。

我使用过 Laravel 和 Zend 等 MVC,它们都使用 PHP 和 MySql。我想知道我是否可以整合建议的解决方案。谢谢。

相关:在离线优先应用程序的情况下,如何与远程数据库同步数据?

标签: javascriptreduxcouchdbofflineprogressive-web-apps

解决方案


使用 PouchDb 将数据保存在本地,然后在网络连接可用时将其与 CouchDb 数据库(或 IBM 的 Cloudant 服务)同步,这是满足此类需求的常用途径。但是您的问题是征求意见,因此会有许多其他完全有效的解决方案。


推荐阅读