简单但很长的页面在IE中非常慢并且在其他地方很快(长DOM导致问题?)

时间:2012-10-29 20:55:59

标签: javascript html internet-explorer browser

我的应用程序提供的一个页面非常长(大约8Mb的源HTML,主要是表格)。我知道这本身就是错误架构的标志,但有些情况不允许快速改变:(

在除了IE之外的几乎所有浏览器中,页面仍然很好 - 当然它比普通的浏览器慢,但看起来显示的时间主要是由代码下载速度定义的,我没有遇到任何问题。

虽然在IE(7,8和9)中有很大的不同 - 在使用冻结屏幕效果下载后大约10-15秒的页面非常慢,然后经历明显的滚动滞后和“脚本运行缓慢”消息页面上没有运行javascript。 IE9在显示该页面时也需要大约800Mb的RAM。

当我提供该大小的纯文本内容时,它会好得多,但格式化的HTML表似乎会导致问题。看起来长DOM是任何版本的IE的阻止程序。

我不知道我希望得到什么答案 - 显然一个正确的解决方案是通过在服务器端分解并通过ajax逐个服务来改变页面架构,但是仍然 - 有什么样的说法IE的魔法pragma或js停止使用DOM树加速它做什么?

1 个答案:

答案 0 :(得分:2)

这将是客户端浏览页面下载的最佳解决方案。但是你必须被告知"table"标签是IE中最慢的渲染标签(正如我的经验所说)。因此,在第一步中,我认为您应该对HTML文档进行一些修改。以下是一些建议:

  1. 清除内联样式表并尽可能使用css类。它将帮助您的HTML文档缩小尺寸。
  2. 使用其他一些表达式而不是使用TABLE。使用DIV将是我的第一个建议。简化您的文档,解析器可以尽可能轻松地读取代码。所以让它们易于阅读。它导致写入越来越少,它有助于文档更小。
  3. 从HTML文档中删除所有空格,制表符,换行符和许多其他内容。
  4. 限定您提交的内容对客户更有用。就像我们现在一样,我们最多可以看到两条线。所以一页上的所有数据都不是一个好主意,实际上是无用的。因为当用户下载文档时,某些数据可能会在服务器上更新,而用户拥有的数据将无法再有效。
  5. 毕竟,永远记住每个字符在内存中存储8个字节(无论它是否为虚拟),包括xml解析器的所有解析变量和内存使用,以及加载HTML字符串的一些硬代码并从中制作一个DOM。读取文档和解析文档的速度与大小一样重要。

    希望它对你有所帮助.. 干杯