【问题标题】:Why is RegExp.test consuming a lot of time in IE?为什么 RegExp.test 在 IE 中消耗大量时间?
【发布时间】:2013-07-26 16:47:12
【问题描述】:

当使用 jQuery 将 HTML 加载到元素中时,我发现 IE 的性能很差。 Chrome 没有显示任何性能问题。更改 IE 浏览器模式似乎不会提高性能。

在 IE 中运行分析器时,我发现大部分时间都花在了 RegExp.test 函数上。

HTML:
<div id="content"></div>

JavaScript:
var htmlString = <div>...Lots and lots of content...</div>
$('#content').html(htmlString);

  • jQuery 版本:1.9.1
  • IE版本:9

【问题讨论】:

  • IERegExp.test 是“慢”虽然...
  • 我通过在内容 HTML 的开头放置一组空的 div 解决了我的问题。发布问题以防其他人遇到此问题。
  • 随时发布答案,解释您是如何解决问题的!它会帮助其他人知道问题已经解决。
  • 我会尽快发布我的完整答案。这里的新用户,只是想提出我的问题和解决方案以帮助其他人。
  • (fn.html() 内部使用多个re.tests)

标签: javascript jquery performance internet-explorer


【解决方案1】:

在加载大量内容时,不要以开始标签开始,以结束标签结束。

将内容更改为: var htmlString = <div></div><div>...Lots and lots of content...</div>

在研究了这个问题后,我发现这个 jQuery 错误请求为我指明了正确的方向。 jQuery 票 #11456

似乎为了兼容 IE,JavaScript RegExp 用于解析正在加载的内容。当内容以标签开头时,它会尝试找到结束标签(或类似的东西)。如果数据量很大,则进行此解析可能需要相当长的时间。我通过在开头放置一个空来解决我的问题。

【讨论】:

  • 什么是“空”?
【解决方案2】:

更新 JQuery 可能会有所帮助。

应该为 JQuery >= 1.12.0 / 2.2.0 修复该问题

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 2013-05-29
    • 1970-01-01
    • 2014-03-03
    • 2011-05-12
    • 1970-01-01
    • 2013-12-26
    • 2022-01-22
    • 1970-01-01
    相关资源
    最近更新 更多