【问题标题】:How to code HTML for fast rendering in IE如何编写 HTML 以在 IE 中快速呈现
【发布时间】:2011-05-17 20:13:47
【问题描述】:

如果 HTML 足够复杂,则 HTML 内容的布局和呈现可能需要一些时间。我找不到一套关于如何编码 HTML 以帮助布局引擎(特别是在 IE 中)的最佳实践,以便更快地重绘页面。是否存在这样一套最佳实践?

我当前的具体问题是我的表格数据(在表格元素中)导致页面绘制速度太慢,并使 DOM 更新(悬停效果)和动画非常缓慢。我确定这不是 JavaScript 性能。我已经使用 dynaTrace AJAX 检查了该页面。当我将鼠标悬停在元素上时 CPU 变得太忙了,但是没有 JS 运行。并且悬停是通过向TR元素添加/删除一个类来实现的。我也在 Firefox 中尝试过 YSlow,它没有显示任何特定问题。它也与网络无关。 (Firefox 布局页面更快,但不是因为它的 JS 引擎更快)

是否有工具可以在 IE 中分析绘图和布局,以便找出问题所在?是什么导致绘图如此缓慢,以便我可以在 HTML 代码中避免它们?

【问题讨论】:

  • 加快渲染速度的最好方法是少写代码。
  • 你没有使用 CSS 表达式,是吗?这些是 JS-in-CSS,往往会消耗所有可用的 CPU 资源。
  • 不,我猜我的 CSS 只是普通的 CSS。
  • 当鼠标悬停在元素上时 CPU 会变得很忙,并且您在没有 Javascript 参与的情况下向 TR 元素添加/删除类?为何如此?还是类的添加/删除不是动态的,我误解了?
  • 涉及到 JavaScript。 JQuery 实际上是用来添加类的。但正如我所描述的,JS 在亚毫秒时间内运行并且完成了。 JS完成后,由于改变了类,所以触发了重绘,耗时太长。

标签: html performance internet-explorer layout profiling


【解决方案1】:

众所周知,Internet Explorer 渲染大型 HTML 表格的速度很慢。

请参阅 MSDN 上的这篇精彩文章:Building High Performance HTML Pages,特别是有关表的部分:

  • 将 table-layout CSS 属性设置为固定在桌子上。
  • 为每一列显式定义 col 对象。
  • 在每个列上设置 WIDTH 属性。

然后在ieblog上也有一篇关于表格渲染的不错的博文:Table Rendering

归结为:尝试使表格中的内容不那么复杂,即设置固定宽度并且不要进行太多动态渲染操作。 IE 首先加载内容,然后必须为内容计算正确的宽度 == 慢。

【讨论】:

  • 和我要说的差不多,只是你有参考资料来支持它。 +1
  • 感谢您的链接。我现在正在尝试这些。到目前为止,我发现如果我删除“宽度 = 100%”,一切都会变得更快,但表格的固定布局实际上会减慢它的速度!我认为应该有一些可用(或开发!)的工具来帮助查明布局瓶颈。你知道吗?
  • 你已经说过 dynaTrace AJAX 版本 - 我不知道有任何工具可以如此深入地显示 IE 引擎盖下实际发生的事情,所以你真的很不走运找出什么疯狂的东西导致你的滞后。您应该坚持您的width=100% 观察并尝试一些变体 - 也许尝试您的表格而不在您的页面上使用所有其他标记?也许问题出在其他地方。
  • +1 "将表格布局 CSS 属性设置为固定在表格上。"
猜你喜欢
  • 2019-08-22
  • 2012-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多