这是一个AJAX请求的数据太多了吗?

时间:2013-09-18 16:52:32

标签: java ajax jersey

我有一个20列的网格,其中包含100到1,000行。

如果每个单元格平均为50个字符,我估计1000行网格将包含20x50x1000个字符= 1MB。

此网格的数据必须由服务器在一个(或多个)AJAX请求中返回。网格是不可编辑的......它只是一种表示大量信息的方式(特别是关于人类基因)。

我很难决定是否应该在一个或多个AJAX请求中返回此消息。您是否认为在一个AJAX请求的XML / JSON响应中返回的数据太多(1MB)?这是反模式吗?或者看看所有数据在逻辑上是一个网格的一部分是否有意义?

这更像是一个设计问题而不是其他任何问题。我感谢任何反馈。

3 个答案:

答案 0 :(得分:1)

您是否可以使用非Ajax请求加载所有数据,然后仅更新通过Ajax更改的单元格?

答案 1 :(得分:1)

可能有趣的是在服务器中保持网格“状态”,因此在编辑每个字段后,您将新内容发送到服务器。这会增加使用的服务器使用量和带宽,但是当用户发送“submit”命令时会使响应更快。这也将允许更快的输入验证(几乎在用户修改单元格之后显示错误消息,而不是半小时之后)。

作为安全方面的改进,在内存(JS内存)中保留一个“脏”(已修改)字段列表,并在其相关的ajax响应告诉您服务器已执行ajax时重置该值呼叫;当用户点击“提交”时,所有仍然脏的字段将再次发送到服务器。

也就是说,只要你远离XML,我认为它不是一个如此繁重的负载(当然这将取决于硬件和你必须服务的并发用户)。

答案 2 :(得分:0)

我建议您批量获取数据。即,获取前20-25行,或刚刚足以填充视口,然后在用户滚动或接近上一批结束时逐渐加载下一批。这可能会使它无缝。

考虑到您可能拥有的记录数量,一次获取所有数据可能不是一种选择。

此外,它不是关于太多数据,而是关于获取数据所花费的时间。我可以保证(根据你如何操纵json响应),浏览器可以处理任何数量的数据。