【问题标题】:How to handle huge table?如何处理巨大的桌子?
【发布时间】:2011-02-12 10:14:35
【问题描述】:

我想向用户显示一个包含约 500,000 行的表格。 表格应该基于文件计算(即表格在开始时是已知的,并且不会改变)。 我猜从内存性能的角度来看,构建这个表的 HTML 文本并不是一个好主意。 那么如何建立这样的表呢?

我希望用户能够使用垂直滚动条滚动表格。是否可以仅动态构建表格的可见部分?我担心会因此而延误。

使用服务器端编程而不是 Javascript 是不是更好?

我不限于任何服务器端编程语言,所以任何建议都将不胜感激!

【问题讨论】:

  • 50 万行听起来不是很有用 - 通常当我有这么大的数据集时,我会尝试找到对数据进行分组和汇总的方法(我无法阅读 500,000数据),通常我在 Excel 或其他应用程序中执行此操作。用户如何在您的数据集中找到任何内容?您能给他们发送一个 CSV 文件或某种摘要报告吗?
  • 查看这个类似的问题以获得一些好的解决方案 - stackoverflow.com/questions/2402953/…

标签: javascript html


【解决方案1】:

在哪里使用 ajax 的经典示例。

将 javascript 与服务器端脚本结合使用。

【讨论】:

    【解决方案2】:

    将前 250 行发送给用户,当他向下滚动时,可能会超过第 200 行,获取接下来的 250 行,追加到表格等等。

    这是一种 (ui) 设计模式,称为“Infinite scroll”。

    【讨论】:

      【解决方案3】:

      这确实是服务器端分页的一个案例,我会说,可能与 Ajax 结合使用。一个有 500.000 行的 HTML 表格会让很多浏览器崩溃。

      您没有指定使用哪种服务器端技术。如果您更新您的问题,我相信人们将能够给您一些指示。

      【讨论】:

        【解决方案4】:

        一次向用户显示 500,000 行是个坏主意。考虑其他选项:

        • 允许用户以 CSV 格式下载文件
        • 显示分页(仍然不是很有用)
        • 提供过滤机制(按日期等)以允许用户仅查看他们需要的数据

        如果用户真的需要一次查看所有数据,那么在浏览器中查看是最糟糕的方法之一 - 他们应该使用专门用于查看数据的工具,比如Tableau

        【讨论】:

        • +1, 500000 行对于人类来说太多了。充其量只是让他们自欺欺人地认为他们已经看到了不错的数据样本。另一个 +1 提到分页也不是一个好的答案
        • 支持这一点:如果用户对数据足够关心,只看每一行一秒钟,他们将需要 5 多天才能到达底部。他们很可能对特定的行感兴趣(然后添加分页和过滤机制,想想 Google 搜索结果)或聚合数据(想想 Wolfram Alpha 图表和数字)。
        • 我不会争论 - 提供这么多信息肯定看起来很愚蠢。但是,提问者并没有问这是否是一个好主意。事实上,我们的客户甚至不会考虑不支持至少 100000 行的解决方案。这就是他们的业务几十年来的运作方式,他们不愿意改变这一点。
        【解决方案5】:

        是否可以仅动态构建表格的可见部分?

        如果你构建一个“假”滚动(例如jquery slider),你可以检索部分表格而不是整个表格。

        【讨论】:

          【解决方案6】:

          试试这个: 集群化.js 轻松显示大型数据集的小插件 https://clusterize.js.org/

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-07-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-01-20
            • 2010-11-20
            • 2014-10-21
            相关资源
            最近更新 更多