在需要频繁用户编辑的Web应用程序中保存用户数据的最佳方法是什么?

时间:2013-04-04 02:17:13

标签: web-applications save

我正在创建一个TODO列表Web应用程序,用于自学习目的。这是我第一次构建一个Web应用程序。我正在使用JavaScript和PHP。我在寻找保存用户数据的最佳方法时遇到了麻烦。

我的应用允许用户创建多个列表。可以通过拖动每个列表来对TODO列表进行排序。还可以编辑每个列表的标题。可以创建,编辑,删除存储在每个列表中的项目,也可以通过拖动项目来更改列表中的顺序。

我希望能够将所有这些内容保存在数据库中,以便用户在回到我的网络应用程序时可以看到他离开的确切位置。我可以想到两种不同的方法。一种是在修改数据时保存数据。例如,如果修改了项目的顺序,我可以检测到更改并立即保存订单。其他的是允许用户编辑数据直到他保存它。

第一种方法可能更简单,更容易实现,但我担心它可能会影响我的应用程序的性能,因为对于每个编辑用户,应用程序需要与服务器通信。第二种方法看起来很有希望,但我需要跟踪自上次保存以来用户已修改的内容,以便通过仅发送更新内容来最小化向服务器的数据传输。为此,我依赖于自定义数据属性和全局布尔变量来指示已修改的内容。

我想要的一个功能是我希望用户在保存时继续编辑。这为第二种方法带来了更多问题。请看我之前提到的问题(How do I capture what to save if user is allowed to modify content during saving?)。一位用户慷慨地给了我一个答案,它应该可以工作,但我没有写过我有自定义数据属性的问题。这些自定义属性仍然可能不同步。

所以我的问题是:

  1. 你会推荐第一种方法吗?为什么或为什么不呢?
  2. 防止自定义数据属性不同步的唯一方法可能只是在保存期间锁定我的应用程序。是否有更好的方法,以便我不需要锁定我的应用程序?
  3. 我仍然不是一个非常有经验的程序员,我可能会遗漏一些非常明显的东西,但是谢谢你的时间!

1 个答案:

答案 0 :(得分:2)

我认为自动保存不会出现任何性能问题,除非您预计每秒会有数千次更新,并且您的网络服务器/数据库速度不够快。

我会在Javascript中创建一个数据结构(研究如何创建javascript类,从学习如何使用哈希开始),它可以保存其属性中的所有数据,并可以触发onchange事件以通过Ajax请求更新

尝试在Javascrip对象和PHP中的数据类/对象之间保持相同的格式(例如,使用JSON格式),这样您在数据库中进行快速更新就不会有太多麻烦。您的PHP类应该能够读取通过Ajax接收的对象的属性并相应地更新数据库。同时,它应该能够生成Javascript中所需的对象以进行读取/加载。

旧金山