【问题标题】:IE9 on Windows 7 slow (excessive rendering)Windows 7 上的 IE9 速度慢(过度渲染)
【发布时间】:2014-12-17 19:24:03
【问题描述】:

这是一个非常奇怪的任何非常令人沮丧的问题,所以请耐心等待我的完整解释。

抢先说明:这不是关于如何提高 DOM/CSS 性能的问题。当您阅读挫折时,您会看到。

我们最近重新设计了跨浏览器的网站(例如 )

在经历了所有痛苦的 HTML 和 CSS 重构之后,我们认为一切都很好。然而,我们的网站具有相当重的 DOM,速度非常缓慢,以至于无法使用。示例:单击以选择一行需要 10 秒才能突出显示并选中其复选框。

挫折:

1) 这种迟缓并不普遍。只有 IE9 受此影响。 IE8、IE10、FireFox、Chrome 都快!

2) IE9 本身如果在调试器中更改为 IE8 文档模式会变得更快!但不是在它自己的 IE9 模式下。

3) 虽然我们注意到有些迟缓,但超级迟缓(到无法使用的程度)仅在特定机器上。

4) 当然,其中一台机器是客户端。

问题:

特定机器有什么独特之处会导致超级迟钝?什么会导致这些机器比其他机器遭受更多的痛苦?

我们检查的内容:

1) Windows 7 完全更新。

2) 我们没有安装 Windows 更新 KB2976627

3) 我们没有安装 Windows 更新 KB2670838

4) 禁用所有插件

5) 再次强调我们禁用了 Shockwave Flash Object。

6) 尝试在 Internet 选项中禁用“软件渲染”以便使用 GPU。

7) 降低 Windows 显示质量设置以运行以获得最佳性能。

其他证据:

当显示区域变小时,响应速度会提高。当浏览器窗口本身变小或部分拖动到屏幕边界之外时,就会发生这种情况。当 DOM 元素被移除/隐藏时性能也会提高。

DynaTrace 显示在渲染上花费了大量时间。

网页内容:

只有:HTML、CSS2、JavaScript、JQuery、简单图像。

  • JqGrid 4.5.2

  • jQuery 1.4.2

  • JQuery-UI 1.8.2

没有以下内容:Flash、视频、CSS3、加载的第三方网页内容。

尝试过的机器:

操作系统:Windows 7 Enterprise N 64 位 内存:2 GB CPU:2.53 Ghz(2 个处理器)

操作系统:Windows 7 企业版 64 位 内存:8 GB CPU:2.67 Ghz(2 个处理器)

IE9版本:

9.0.8112.16421 64 位 IE9 更新版本:9.0.31 (KB2977629)

我们尝试卸载更新 KB2977629,但没有任何改进。

问题重复:

特定机器有什么独特之处会导致超级迟钝?什么会导致这些机器比其他机器遭受更多的痛苦?

【问题讨论】:

  • 抱歉,如果您不包含解决方案中真正重要的部分,则该问题对其他人没有任何价值。一开始你使用哪些版本的jqGrid、jQuery UI和jQuery?下一个你如何使用jqGrid?你没有包含任何jqGrid选项的例子和您使用的回调。您至少可以在问题后面附加一个重现问题的演示的 URL。
  • 无法提供真实的示例链接。我正在使用 JqGrid 4.5.2 - 但尽管它会降低性能 - 我不确定它是特定于 JqGrid 还是只是它是 DOM 的一个相当大的部分。我已经说过 DOM 和 CSS 很重。我们有大约 800 个 DOM 元素(其中 JqGrid 约为 300 个)和 3000 多个 CSS 规则(包括来自 jquery-ui 和 jqgrid)。是的,我知道,我知道不好。我们正在努力。但是您没有阅读我两次提到的问题。为什么 SPECIFIC 看似随机的 Win7 和 IE9 机器受苦,而大多数其他机器都还好(ish)?
  • 我在我的问题中明确指出提高 DOM/CSS 效率不是目标。首先要了解Win7 IE9是怎么回事。你认为 JqGrid 的配置足以让这个问题变得无关紧要吗?
  • jqGrid 4.5.2 是旧的,但更新到 4.6.0 可能无法解决问题。不过,如果您可以在某些计算机上重现该问题,我建议您进行一项测试,将 jqGrid 4.5.2 临时替换为 4.6.0 以确保确定。 您仍然没有发布您使用的 jQuery UI 和 jQuery 版本吗? 无论如何,您应该在问题后面附上一个示例,该示例显示 如何填充 jqGrid至少需要一个显示您如何创建 jqGrid 的代码片段
  • 你应该明白jQuery 1.4.2是在IE8和FF 3.6的时候发布的。如果你想在当前版本中支持 IE9-IE11、Firefox、Chrome、Safari 和 Opera,你应该更新 jQuery。如果您需要支持 IE 6/7/8,那么它应该是 jQuery 1.11.1。如果你需要从 IE9 开始支持 IE,它应该是更快速更小的 jQuery 2.1.1。 关于jQuery和jQuery UI更新的评论有共同的性质,可能不是你遇到的主要问题。

标签: performance windows-7 jqgrid internet-explorer-9


【解决方案1】:

我发现了这个解释。正如我在说出原始问题时所担心的那样,JQGrid 会分散注意力(红鲱鱼)。真正的原因在另一个stack overflow article中得到了解答。

简而言之,我们的页面包含很多圆角(即边框半径)样式。 IE9 中有一个错误会导致渲染引擎阻塞。删除此样式后,一切又恢复了!

这也解释了为什么 IE8 浏览器甚至在 IE8 文档模式下使用 IE9 速度很快。 IE8不支持border-radius所以不属于这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-04
    • 2014-08-30
    • 2015-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多