【发布时间】:2011-07-13 15:30:04
【问题描述】:
我在标签中向用户显示了许多大表,每个标签一个表。这些表可能会变大到导致速度问题的程度,最多可达 5000 行和 100 列。当表格变大时,在选项卡之间切换和在表格中滚动会变得很慢。所以我正在寻找加快查看表格内容的方法。这是有关页面设置的其他一些信息;我会发布一个示例,但我没有可以发布的示例。
我在表格上实现了标题/行锁定,以便始终可以看到每行中的前 4 列,因为之前所做的没有滚动锁定并查看表格的大部分毫无意义,因为你不知道你在看什么;识别单元格不再可见。
对于我通过此查看的大多数数据集没有任何问题,但是当表格达到上述大小时,只是尝试滚动表格,浏览器需要几秒钟才能赶上。我猜浏览器不喜欢页面上的内容量,所以我试图找出一种加快速度的好方法。
我已经根据我最初的想法对页面做了很多事情,因为它之前的速度更慢。我已经通过在 PHP 中构建“锁定”表而不是尝试动态转换常规表来减轻 Javascript 的大部分负载,这有很大帮助。我现在在 Javascript 中做的唯一事情是为每个表进行 ajax 调用,将返回的 html 代码附加到页面,如果需要,调整表的 div 容器的大小,并设置滚动触发器,以便固定标题和固定边随着内容滚动,我认为此时我可以从 Javascript 引擎中移除更多内容。
我认为为表格实现一些虚拟滚动或分页可能会有所帮助,但我不确定如何自己实现它。我发现了许多具有这些功能的东西,但没有我需要的滚动锁,所以我认为我无法获得已经可以使用的东西。 (即使每个“页面”显示的行数较少,我也想不出一种方法来解决大约 100 列的事实)。我认为,不仅仅是从 php 脚本发送表格的 html,我还可以发送一个数组,其中每个索引都有一行的 HTML 或其他东西。然后,当我加载页面时,我可以加入数组的相关部分,删除先前显示的部分,并将加入的 HTML 代码转储到页面。这样,每页更改只有一个 .append 。但在我继续尝试实施类似的东西却发现它并没有真正帮助,它会导致其他问题等之前,我认为我应该获得其他想法或建议。
【问题讨论】:
-
您确定浏览器是显示此数据的最佳位置吗?
-
相比什么? PDF什么的?正在显示的数据可以随时更新。自动创建一些不同格式的报告是不可行的,因为如果在计划的过程中创建报告的数据可能会过时,或者在发生更新时必须每天为每个用户运行数百次。
-
报告消费者是否定期查看大部分数据?还是不同的用户或用户类型需要不同的部分?如果是这样,您可以根据需要生成更小、更有针对性的报告。同样的原则也适用于输入:如果特定用户只需要编辑数据的一部分,则提供一个 HTML 表单作为界面来访问这部分数据。
-
不幸的是,他们确实如此。虽然有一个界面允许他们查看数据的各个部分,但他们仍然可以选择查看附加到他们的所有数据,其中大约 10% 的人拥有足够的数据,这可能会导致我遇到的问题有。不过,编辑数据不是问题,这是一个完全不同的过程。
-
您当前是否在用户切换到新标签时转储现有数据?