通过ajax在后台预加载多个大型数据集?

时间:2013-01-23 20:13:01

标签: javascript ajax jquery

我正在开发一个完全在一个页面中的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. 其他一些方法......

2 个答案:

答案 0 :(得分:1)

这些表格是否正在编辑或仅被查看?

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

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

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

答案 1 :(得分:1)

我建议在一次调用中加载主表,然后在剩下的表中再次调用。主要问题是,如果您将任何内容批处理,则在整个AJAX请求完成之前,该应用程序都不会获得任何信息。因此,如果您在一次调用中加载所有内容,可能需要一段时间,并且当用户完成登录时主表将不会就绪。