1

我们正在构建一个 Web 应用程序,该应用程序有一个页面,用户可以在其中看到一个可编辑项目的大表。该表在每一行上都有控件以向上/向下移动该行以及删除该行的选项。每行也有两个选择元素。

在极端情况下,该表可能包含大约 200 行,当我们有很多行时,我们会遇到严重的性能问题。页面上下滚动非常慢,我们在屏幕上看到“checker-boxing”,删除一行也需要大约 30 秒,有时甚至更长时间!上下移动需要相似的时间,并且页面通常不可用。

我们一直在努力缩小问题的确切范围,并且我们很确定这与表中的选择元素有关——如果我们从行中删除这些元素;滚动是完美的,上下移动约 1 秒,删除一行约 7 秒。

如果我们从 200 行表的底部删除一行,它几乎是即时的。

问题似乎与页面上的 CSS 有关,当我们运行分析器时,重新计算样式大约需要 3 秒。

该页面在其他浏览器中运行良好,任何帮助/知识都会很棒。

谢谢

4

2 回答 2

0

我们的 iOS 6 Web App 中有几个表,其中一些包含数百行只读文本,但有些还包含 SELECT 元素。

将表格布局设置为固定对性能产生了巨大影响。一些较大的表格在默认的动态表格宽度计算中存在严重的渲染问题,到目前为止我们还没有解决这个问题。当一行包含复选框时尤其如此。

例如,有些表格没有呈现最后一行,或者表格在靠近底部的任何地方被切断,等等。

我们为纵向模式使用了一个特殊的样式表,它改变了 TABLE 和 TD 元素的宽度,并且还完全删除了一些列。

这真的很好,到目前为止没有造成任何副作用或问题。

对于滚动,我们在表格周围使用一个特殊的 DIV 元素,该元素具有定义的高度并使用“-webkit-overflow-scrolling: touch”。即使是具有大约 850 个条目的最大表格也可以滚动,而不会损失任何性能或闪烁。

你什么时候渲染表格?在页面渲染/准备/加载事件期间?您是使用“innerHTML”赋值还是在逻辑中创建 DOM 树?

于 2012-12-11T16:27:31.707 回答
-1

设置table-layout:fixed;为表格上的样式属性(在您的样式表中)可能会使其响应更快。浏览器必须做更少的计算,缺点是你必须自己指定列宽。

于 2012-12-06T15:06:30.847 回答