【问题标题】:Best way to handle the one million records in Select box of jsp在jsp的Select框中处理一百万条记录的最佳方法
【发布时间】:2017-10-24 16:35:02
【问题描述】:

我正面临 jsp 的性能问题。应用程序是在 2002 年使用 jsp 和 javascripts 在 struts 1.x 上设计的。 在一种情况下,我们必须在选择特定类别时向用户显示大约 100 万条记录。 就像jsp名称上有两个选择框A和B一样。 A 有 (category approx 1000) 的列表。在选择类别时,我们必须在选择框 2 中显示子类别(大约 100 万条记录)。 (java脚本函数可以点击服务器并获取同一jsp上的记录) 目前我们在性能方面面临很多问题。

请建议以现有方式向用户显示此类记录的最佳方式(使用 jsp 上的 2 个选择框)或任何其他最佳方式。

【问题讨论】:

  • 我不得不说“不要”是最好的方法。我无法想象任何用户想要在他们的屏幕上处理 100 万个东西,而且我会担心像移动设备这样的小型系统上的资源。
  • 它是一个 Web 项目,建议仅在桌面上运行。是的,这是一个要求,用户希望在屏幕上看到一百万条记录。货物和运输组织使用类似订单详细信息产品的监控。
  • 但是……但是……这太疯狂了。计算机是用来过滤信息的,而不是用户。
  • 嗯...我做了一个小提琴,添加了一个带有一百万个选项的选择元素。在 FF 中运行时,它在半分钟内创建了元素,但打开选择实际上会使浏览器崩溃。在我击落 FF 时,它占用了 6GB 的 RAM ...

标签: javascript java jsp struts-1


【解决方案1】:

浏览 1000000 条记录对任何人来说都不好玩。我会引入分页和一些过滤器/搜索,以便用户可以限制结果。

如果您绝对必须显示一百万行的列表,您可以构建一个呈现列表的组件,但只呈现可见的行。所以,你会给你的滚动区域一个内部高度(rowHeight * numberOfRows),当有人滚动到某个部分时,你使用 ajax 只从服务器加载该数据并渲染将进入该区域的项目,并且绝对将它们放置在正确的位置。该技术称为对象池:https://en.wikipedia.org/wiki/Object_pool_pattern。这使您不必从服务器加载所有数百万个项目,而一次只需要渲染其中的几个。

【讨论】:

  • 谢谢先生。分页是我们的最后选择。通过使用 jquery 和 ajax 或其他更好的方法来解决这个问题是否有任何其他最佳方法
  • 更新了我的答案,您可以构建一个只呈现可见行的组件
猜你喜欢
  • 1970-01-01
  • 2020-08-10
  • 2017-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2021-08-07
相关资源
最近更新 更多