【发布时间】:2015-02-24 14:43:54
【问题描述】:
我一直使用 Struts2 作为我的 MVC 框架,作为构建基于 J2EE 的 Web 应用程序的一部分。
该应用程序的一部分是显示主要有数千行和数十列大小的报告(HTML 表格)。我已经实现了分页以使报告可读等...
今天的报告系统工作方式如下:整个数据以 OOP 方法准备并放置在 ValueStack 中。对应的 JSP 会读取 valueStack 的数据并使用 JSTL 绘制 HTML 代码。
我正在修改代码,我想重新审视这个逻辑以符合行业的最佳实践。这里的主要问题是,有哪些最佳实践?
渲染和绘制报告需要时间。尤其是在基于 IE 的浏览器上,在显示数据之前页面变得无响应(IE8 支持是必须的)。那么最好的选择是什么?
是否使用 javascript 框架如 jQuery 并将绘图部分移动到客户端?我是否知道以某种方式将整个 HTML 代码存储在值堆栈中并一次显示它? 您认为最佳的方式是什么?
【问题讨论】:
-
一个最佳实践是仅在服务器上计算您显示的分页选项卡的数据。如果你显示例如页面上的结果 100 到 199,订购您的数据并仅从服务器获取项目 100 到 199,这样您就可以节省服务器的计算时间。尽管您从服务器加载每个页面,但每次视图处理较少的数据量可能会提高效率。
-
另一种思考方式:渲染所有内容并呈现它的解决方案可能是呈现整个结果集的最快方式。问题很少可能想要整个结果集。如果您可以确定人们需要什么并提供适当的过滤方法,那么人们将在发送更少的数据的情况下更快地得到他们想要的东西。另一个考虑因素是,即使他们想要查看整个集合(在浏览器中)响应性是关键,考虑 50 条记录的可见区域但 json 提取大小为 100。然后随着范围移动到末尾来获取新集合可用记录。
-
有些 JavaScript UI 控件已经提供了这个功能(无缝滚动),它是现代“数据网格”的一个共同特征。
-
旧的 ng-grid(其中 ui-grid 是继承者)也有这个特性 via:scope.$on('ngGridEventScroll', function () {/*append rows to grid*/ });
标签: javascript jquery html model-view-controller struts2