0

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

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

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

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

我不知道我希望得到什么答案 - 显然,一个合适的解决方案是通过在服务器端分解页面架构并通过 ajax 逐个提供服务来改变页面架构,但是 - 是否有任何说魔术 pragma 或js 让 IE 停止做它与 DOM 树加速它所做的事情?

4

1 回答 1

2

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

  1. 尽可能清除内联样式表并使用 css 类。它将帮助您的 HTML 文档更小。
  2. 使用其他一些表达式而不是使用 TABLE。使用 DIV 将是我的第一个建议。简化您的文档,解析器可以尽可能轻松地读取代码。所以让它们易于阅读。它会导致写得更少,它有助于文档变得更小。
  3. 从 HTML 文档中删除所有空格、制表符、换行符和许多其他额外内容。
  4. 使您呈现的内容对客户更有用。就像我们现在一样,我们最多只能看到两条线。所以一页上的所有数据都不是一个好主意,实际上没用。因为当用户下载文档时,服务器上的某些数据可能会更新,您的用户拥有的数据不再有效。

毕竟,永远记住每个字符在内存中存储 8 个字节(不管它是不是虚拟的),包括所有解析变量和 xml 解析器使用的内存,以及一些很难加载 HTML 字符串并从中生成 DOM 的代码. 阅读和解析文档的速度与大小一样重要。

希望它可以帮助你..干杯

于 2012-10-29T21:20:05.513 回答