其实在web开发中,单纯因为js导致性能问题的很少,主要都是因为DOM操作引起的。
1查找元素的优化
2改变DOM,包括添加,修改,删除DOM
3改变DOM的样式类等
4批量修改DOM
5减少iframe
6样式放在header中,脚本放在关闭标签</body>之前
1查找元素的优化
因为ID是唯一的,也有原始的方法,因此使用ID查找元素是最快的,其次的是根据类和类型查找元素,通过属性查找元素是最慢的,因此应该尽可能的通过ID或者类来查找元素,避免通过类来查找元素。
2改变DOM,包括添加,修改,删除DOM
改变DOM就会引起浏览器渲染,而渲染是相当慢的,因此应该避免不必要的渲染
[javascript] view plain copy
divUpdate.innerHTML = "";
for ( var i=0; i<100; i++ )
{
divUpdate.innerHTML += "<SPAN>This is a slower method! </SPAN>";
}
改为
[javascript] view plain copy
var str="";
for ( var i=0; i<100; i++ )
{
str += "<SPAN>This is faster because it uses a string! </SPAN>";
}
divUpdate.innerHTML = str;
3改变DOM的样式类等
改变DOM元素的样式,类也会导致浏览器渲染,因此也应该减少不必要的操作
[javascript] view plain copy
var el = document.getElementById('mydiv');
el.style.borderLeft = '1px';
el.style.borderRight = '2px';
el.style.padding = '5px';
改为
[javascript] view plain copy
var el = document.getElementById('mydiv');
l.style.cssText = 'border-left: 1px; border-right: 2px; padding: 5px;';
4批量修改DOM时从文档流中摘除该元素 ,对其应用多重改变 ,将元素带回文档中
这样可以最小化重绘和重排版 ,
具体方法:
1 隐藏元素,进行修改,然后再显示它。
2将原始元素拷贝到一个脱离文档的节点中,修改副本,然后覆盖原始元素。
5减少iframe
iframe需要消耗大量的时间,并阻塞下载,建议少用
据说动态给iframe添加URL可以改善性能,未做测试
6样式放在header中,脚本放在关闭标签</body>之前
样式放在header中,可以加快渲染,脚本放在关闭标签</body>之前可以加快下载速度,不免阻塞下载。
网友评论