【发布时间】:2012-02-22 16:04:50
【问题描述】:
我正在处理带有大表的 Web 应用程序的页面。在某些情况下,12 列和多达 300 行。我很难让表格在 Internet Explorer 中快速呈现。我在这段测试代码中复制了我的困难:
在配备 4GB RAM 的英特尔四核 Q8200 上使用 IE9 进行的一些基准测试:
50 行,12 列:432 毫秒
100 行,12 列:1023 毫秒
200 行,12 列:2701 毫秒
400 行,12 列:8107 毫秒
800 行,12 列:24619ms
指数级的糟糕。
我设法找到了一些代码,它们可以在 Internet Explorer 上更快地呈现相同的测试表,但是因为我使用 mustache.js 模板来呈现我的单元格和行(将所有 HTML 标记排除在我的 JavaScript 之外),我'无法使用这些 DOM 方法:
基准测试结果:
50 行,12 列:37 毫秒
100 行,12 列:72 毫秒
200 行,12 列:146 毫秒
400 行,12 列:324 毫秒
800 行,12 列:566 毫秒
我不能像第二个例子那样逐块构造表格,因为使用客户端模板我需要注入 mustache 返回的 HTML 字符串。如果您开始在其中粘贴 .innerHTML,性能会再次下降。
谁能推荐一种以更有效的方式构建表格的方法,以符合客户端模板的使用?
分页是解决此问题的一种方法,但我想自己解决问题。
非常感谢任何建议!
【问题讨论】:
-
我认为这是您在该循环的每次迭代中执行的 DOM 遍历,然后 DOM 操作 12 次正在杀死它。尽可能少地触摸 DOM。做任何你能做的处理,然后把它添加到 DOM 中。
标签: javascript jquery html internet-explorer browser