太多的ID会影响性能吗?

gdo*_*ica 20 html javascript asp.net-mvc performance jquery

如果我在页面中有不必要id的元素,就像在HTML HelperASP.Net-MVC.
它会降低我的id选择器的性能吗?(我有一个巨大的元素页面)

例:

// First DOM   
<HTML>
...
    <input type="text" value="first" id="useless" />
    <input type="text" value="second" id="useful" />
</HTML>

// Second  DOM  
<HTML>
...
    <input type="text" value="first"/>
    <input type="text" value="second" id="useful" />
</HTML>
Run Code Online (Sandbox Code Playgroud)

脚本:

<script>
    alert($('#useful').val());
    // never select the first element (with the useless id)
</script>
Run Code Online (Sandbox Code Playgroud)

Bar*_*man 17

简短的回答,没有.

http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/

几个月前,有一些关于低效CSS选择器的性能影响的帖子.我很感兴趣 - 这是我生活的那种浏览器特质行为.在进一步调查中,我不太确定是否值得花时间让CSS选择器更有效率.我会更进一步地说,如果我们明天醒来并且每个网页的CSS选择器都被神奇地优化,我认为没有人会注意到......

我修改了测试如下:

  • 2000个锚点和2000个规则(而不是20,000个) - 这实际上导致~6,000个DOM元素,因为P,DIV,DIV,DIV中的所有嵌套
  • 基线页面和标签选择器页面具有2000个规则,就像所有其他页面一样,但这些是与页面中的任何类都不匹配的简单类规则

我在12个浏览器上运行这些测试.页面渲染时间是使用页面顶部和底部的脚本块测量的.(我从本地磁盘加载页面以避免分块编码可能造成的影响.)...

基于这些测试,我有以下假设:对于大多数网站,优化CSS选择器可能带来的性能提升很小,并且不值得花费.有一些类型的CSS规则和与JavaScript的交互可以使页面明显变慢.这是重点应该是...


knu*_*nub 5

选择一个id非常快,因为jQuery备份到本机

 document.getElementById
Run Code Online (Sandbox Code Playgroud)

功能.但是,如果经常使用它们,可以缓存选择器(将它们保存在变量中).