1

我正在开发一个完全在一个页面中的 Web 应用程序,它基于在网格中显示一堆表格数据。数据库中有大约 30 个不同的表,用户可以随时请求其中任何一个以网格形式显示在他们的屏幕上。大多数(但不是全部)这些表的行数少于 1000 行。这些网格的数据正在通过 ajax 调用和加载。

现在,我显示登录屏幕并立即预加载一些主表,因此当用户输入他们的用户名和密码时,它正在加载初始网格。这确实增加了用户体验,因为他们不必在单击查看这些数据网格之一后等待 ajax 调用。因此,我正在考虑更进一步。

我正在考虑进行 ajax 调用以在后台加载所有 30 个表。在需要之前,它们不会被添加到 dom 中,而是添加到数组中。不利的是我不知道用户是否会在他们的会话中使用这些表的一半,但他们所做的那些通常会在用户请求时立即显示并创造更好的用户体验。

所以,我的问题是,通过 ajax 调用将 30 个完整的数据表(每个表大约 50 到 1000 行)存储在数组中是否是个好主意,如果是这样,获得最佳性能的最佳方法是什么(保持请记住,我只是将它们放入数组中,而不是在预加载后将它们添加到 dom 中)?以下哪一项是最好的方法:

  1. 在页面加载时为每个表进行 30 次 ajax 调用
  2. 在返回所有表格的页面加载时进行 1 次 ajax 调用
  3. 在页面加载时进行 5 次 ajax 调用,每次都返回 6 个表
  4. 倾斜 ajax 调用,所以我做了一些,然后一旦它们完成,再做一些
  5. 还有一些方法...
4

2 回答 2

1

这些表格是正在编辑还是只会被查看?

如果仅查看上面的答案,则可能需要加载所有 30 个表(假设它们没有任何包含 BLOB 数据的字段)并将它们存储在应用程序的内存中而不是会话内存中。

如果要编辑表,则找出该用户(组?)经常使用哪个表并预加载这些表。

同样,我认为您的初始里程碑已经足够好,我不确定我是否喜欢在会话中为用户加载可能的 30,000 行数据的想法。特别是因为它有可能不被使用......如果数据库中的数据发生变化会发生什么,你要同步它吗?你怎么知道它变了?你要轮询数据库吗?看到开始出现的问题了吗?

于 2013-01-23T20:20:45.707 回答
1

我建议在一次调用中加载主表,然后在另一次调用中加载其余表。主要问题是,如果您将任何东西一起批处理,那么在整个 AJAX 请求完成之前,应用程序将无法使用这些信息。因此,如果您在一次调用中加载所有内容,则可能需要一段时间,并且当用户完成登录时主表不会准备好。

于 2013-01-23T20:21:23.750 回答