一个期望用户频繁编辑的Web应用程序中,保存用户数据的最佳方法是什么?

3
我正在创建一个用于自学的TODO清单Web应用程序。这是我第一次构建Web应用程序。我正在使用JavaScript和PHP。我在寻找最佳方法来保存用户数据时遇到了问题。
我的应用程序允许用户创建多个列表。TODO列表可以通过拖动每个列表进行排序。每个列表的标题也可以编辑。存储在每个列表上的项目可以通过创建、编辑、删除或拖动项目的顺序来更改。
我希望能够将所有这些保存在数据库中,以便用户回到我的Web应用程序时可以看到他离开的地方。我能想到两种不同的方法。一种是在修改时立即保存数据。例如,如果修改了项目的顺序,我可以检测到更改并立即保存顺序。另一种是允许用户在保存之前编辑数据。
第一种方法可能更简单易实现,但我担心它会影响我的应用程序性能,因为每次用户进行编辑时,应用程序都需要与服务器通信。第二种方法看起来很有前途,但我需要追踪用户自上次保存以来修改了什么,以便通过仅发送更新的内容来最小化与服务器的数据传输。为此,我依赖于自定义数据属性和全局布尔变量来指示已被修改的内容。
我想要的一个功能是,在保存时允许用户继续编辑。这会给第二种方法带来更多问题。请参见我之前提出的问题(如果在保存期间允许用户修改内容,如何捕获要保存的内容?)。一位用户友善地给了我一个答案,它应该可以解决,但我没有在问题中写明我有自定义数据属性。这些自定义属性仍然可能不同步。
所以我的问题是:
  1. 你会推荐第一种方法还是第二种方法?为什么?
  2. 防止自定义数据属性不同步的唯一方法可能只是在保存期间锁定我的应用程序。是否有更好的方法,以便我不需要锁定我的应用程序?

我仍然不是一个非常有经验的程序员,我可能会忽略一些非常明显的东西,但感谢您的时间!

1个回答

3

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

我会在Javascript中创建一个数据结构(研究如何创建JavaScript类,首先学习如何使用哈希),该数据结构可以将所有数据存储在其属性中,并可以触发onchange事件来通过Ajax请求更新。

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

Francisco


谢谢。我想我会做自动保存的。这样编码起来更简单。我会研究使用 JSON 格式。 - CookieEater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接