我的应用程序提供的页面之一非常长(大约 8Mb 的 HTML 源代码,主要是表格)。我知道这本身就是错误架构的标志,但在某些情况下不允许快速更改:(
在除 IE 之外的几乎所有浏览器中,页面仍然很好 - 当然它比平均速度慢,但看起来显示所需的时间主要由代码下载速度决定,我对此没有任何问题。
但在 IE(7、8 和 9)中却有很大不同 - 下载后页面非常慢大约 10-15 秒并出现卡住屏幕效果,然后遇到明显的滚动滞后和“脚本运行缓慢”消息页面上没有运行 JavaScript。显示该页面时,IE9 也会占用大约 800Mb 的 RAM。
当我提供该大小的纯文本内容时,效果要好得多,但格式化的 HTML 表格似乎会导致问题。看来长 DOM 是任何版本 IE 的拦截器。
我不知道我希望得到什么答案 - 显然,一个正确的解决方案是通过在服务器端分解页面架构并通过 ajax 逐个提供服务来更改页面架构,但仍然 - 有什么说法吗魔法 pragma 或 js 让 IE 停止执行 DOM 树加速的操作?
最佳答案
这将是客户端下载页面的最佳解决方案。但你必须知道 "table"
标签是 IE 中最慢的渲染标签(正如我的经验所说)。所以第一步我认为你应该对 HTML 文档做一些修改。以下是一些建议:
- 清除内联样式表并尽可能使用CSS类。它将帮助您缩小 HTML 文档的大小。
- 使用一些其他表达式代替使用 TABLE。使用 DIV 是我的第一个建议。简化您的文档,解析器可以尽可能轻松地读取代码。所以要让它们易于阅读。它会导致写入次数减少,从而使文档变得更小。
- 从 HTML 文档中删除所有空格、制表符、换行符和许多其他额外内容。
- 确保您所展示的内容对客户更有用。现在我们最多只能看到两条线。所以将所有数据放在一页上并不是一个好主意,实际上没有什么用处。因为当用户下载文档时,服务器上的某些数据可能会更新,并且您的用户拥有的数据不再有效。
毕竟,永远记住每个字符在内存中存储 8 个字节(无论它是否是虚拟的),包括 xml 解析器的所有解析变量和内存使用以及一些加载 HTML 字符串和创建 DOM 的硬代码出来了。读取文档和解析文档的速度与大小一样重要。
希望对你有帮助.. 干杯
关于javascript - 简单但长的页面在 IE 中非常慢,而在其他地方则很快(长 DOM 会导致问题?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13129530/