javascript - 简单但长的页面在 IE 中非常慢,而在其他地方则很快(长 DOM 会导致问题?)

标签 javascript html internet-explorer browser

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

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

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

当我提供该大小的纯文本内容时,效果要好得多,但格式化的 HTML 表格似乎会导致问题。看来长 DOM 是任何版本 IE 的拦截器。

我不知道我希望得到什么答案 - 显然,一个正确的解决方案是通过在服务器端分解页面架构并通过 ajax 逐个提供服务来更改页面架构,但仍然 - 有什么说法吗魔法 pragma 或 js 让 IE 停止执行 DOM 树加速的操作?

最佳答案

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

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

毕竟,永远记住每个字符在内存中存储 8 个字节(无论它是否是虚拟的),包括 xml 解析器的所有解析变量和内存使用以及一些加载 HTML 字符串和创建 DOM 的硬代码出来了。读取文档和解析文档的速度与大小一样重要。

希望对你有帮助.. 干杯

关于javascript - 简单但长的页面在 IE 中非常慢,而在其他地方则很快(长 DOM 会导致问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129530/

相关文章:

javascript - 定位除 Internet Explorer 8 之外的所有内容-

javascript - fileReader 在 IE 中不工作

javascript - 在 Highcharts 时间序列的标题中显示百分比变化

javascript - JSON 对象,绘制图表时出现奇怪的情况,怎么了?

javascript - 谷歌地图 OverlayView : make only SVG clickable

c# - 使用 Razor 语法定义 HTML 属性名称

HTML 表格跨越整个宽度

javascript - 正则表达式用于删除js中的css规则

javascript - 如何使用 css、javascript 和 html 制作旋转的 bg 图像?

c# - window.external 上的无参数方法在使用 typeof 检查时被调用