2

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

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

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

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

这更像是一个设计问题。我很感激任何反馈。

4

3 回答 3

1

您不能使用非 Ajax 请求加载所有数据,然后只更新通过 Ajax 更改的单元格吗?

于 2013-09-18T16:56:02.393 回答
1

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

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

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

于 2013-09-18T17:09:33.293 回答
0

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

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

此外,这不是关于太多数据,而是关于获取该数据所需的时间。我可以向您保证(根据您操作 json 响应的方式),浏览器可以处理任意数量的数据。

于 2016-09-26T13:53:09.993 回答