在 Internet Explorer 中非常慢 reflow/layout

Very slow reflow/layout in Internet Explorer

我必须动态构建一个具有 +450 行/+90 列的 table 并在 Internet Explorer 中显示它。在过去的两天里,我一直在大力优化,最终创建了一个 table 行的集合作为一个非常长的字符串,并将其分配给 [=30= 的 tBody 的内部 HTML ].

它在 Chrome/Mozilla 中工作得很好,回流大约需要 0.2 秒,但在 Internet Explorer 中非常慢。渲染大约需要 4 秒(我说 "about" 因为如果控制台打开(用于时间测量)则渲染需要 19 秒)。另一个问题是 innerHTML 在 IE9 及以下版本中甚至不被支持。所以问题是:在 IE9 中尽可能快地呈现大量 HTML 的最快方法是什么?
HTML 样本:

<tr class="data-row" ><td class="hidden" style="width: -21px; padding: 
10px;">"1"</td><tdclass="structureCatagory" style="width: 119px; padding: 
10px;">"0381"</td><td class="structureCatagory" style="width: 139px; 
padding: 10px;">"Some text"</td><td class="structureCatagory" 
style="width: 139px; padding: 0px;"><img src="/Content/Images/info.png" 
onclick="Interface.OnImageClicked($(this))" ></td>...

以此类推,共4178521个字符。
Javascript:

function Update() {
    var displayData = Model.GetData();
    if (displayData == undefined || displayData.length == 0)
        return false;
    var rows = "", len = displayData.length;
    for (var i = 0; i < len; i++) rows += GetRow(displayData[i]);
    //until here it's very fast
    GlobalQueries.dataTableBody[0].innerHTML = rows;
    //^ this line takes alot of time
    return true;
}

提前致谢!
编辑:table 本身:

<div class="grid">
    <table class="fixed">
        <tbody></tbody>
    </table>
</div>
<style>
    .grid { margin-top: 240px; margin-left: 10px; }
    .grid td, .header-row td { border: 1px solid black; }
    table.fixed { table-layout: fixed; }
</style>

我认为只有惰性渲染才能帮到你。这样您将减少页面上 HTML 节点的数量并使其更轻。您不需要渲染屏幕上不可见的行...

有jQuery、React、Polymer...等例子。

为了使绘画看起来更快,您可以批量插入而不是一次插入整个 table,而是使用 requestAnimationFrame 等方法分块插入。