2013-01-23 27 views
0

我正在开发一个完全在一个页面中的Web应用程序,它基于在网格中显示一堆表格数据。数据库中有大约30个不同的表格,用户可以随时要求其中的任何一个表格在屏幕上随时显示。大多数但不是全部的这些表格少于1000行。这些网格的数据被调用并通过ajax加载。通过ajax在后台预加载多个大型数据集?

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

我正在考虑让ajax调用在后台加载所有30个表。直到需要时才会将它们添加到dom中,而是将其添加到数组中。否定的是我不知道用户是否会在他们的会话中使用这些表的一半,但他们通常会根据用户请求立即显示这些表,并创建更好的用户体验。

所以,我的问题是,通过ajax调用在数组中存储30个完整的数据表(大多数为每个表约50至1000行)是个好主意,如果是的话,那么获取最好的性能(请记住我只是把它们放在数组中,而不是在预加载后将它们添加到dom中)?以下哪项是最好的办法:

  1. 请在网页加载时的每个表30 Ajax调用
  2. 请在页面加载1个Ajax调用返回的所有表
  3. 让像5 AJAX调用页面加载像6张桌子
  4. 歪斜每个返回Ajax调用,所以我做了几个,然后一旦完成,做一些更
  5. 一些其他的方法...
+0

这个问题的大部分答案取决于它们将如何加载。如果你有30个表格,他们有多少人可以用一个动作访问? –

+0

你在这里讨论的总数据量是多少? –

+0

我会随需求请求数据,而不是请求超过x个记录的整个表,而只是根据需要请求数据的一个子集。 –

回答

1

我建议在一次调用中加载主表,然后再调用其余表。主要问题是,如果您将所有内容一起批处理,那么在整个AJAX请求完成之前,这些信息都不会提供给应用程序。因此,如果您在一次调用中加载所有内容,这可能需要一段时间,并且用户完成登录时主表不会准备就绪。

+0

对我有意义。这将调用降到最低限度,但确保首先加载重要的东西。 – dallin

1

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

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

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

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

相关问题