JavaScript性能优化小技巧,创建文档碎片

来源:CssRain 时间:2010-03-31 18:27:00 

讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么。

在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于少量的更新,一条条循环插入也会运行很好,也是我们常用的方法。代码如下:

for(var i=0;i<5;i++){
   var op = document.createElement("span");
   var oText = document.createTextNode(i);
 op.appendChild(oText);
   document.body.appendChild(op);
}

但是,如果当我们要向document中添加大量数据时(比如1w条),如果像上面的代码一样,逐条添加节点,这个过程就可能会十分缓慢。

为了解决这个问题,我们可以引入createDocumentFragment()方法,它的作用是创建一个文档碎片,把要插入的新节点先附加在它上面,然后再一次性添加到document中。

代码如下:

var oFragmeng = document.createDocumentFragment();   //先创建文档碎片
for(var i=0;i<10000;i++){
   var op = document.createElement("span");
   var oText = document.createTextNode(i);
   op.appendChild(oText);
   oFragmeng.appendChild(op); //先附加在文档碎片中!
document.body.appendChild(oFragmeng);//最后一次性添加到document中

经过测试,在ie,firefox下性能明显得以提高。大家可以自己测试下

前端性能优化都是从一些细节地方做起的,如果不加以注意,后果很严重。

PS:这个优化跟循环添加html代码有点类似。

标签:节点,javascript优化,文档碎片
0
投稿

猜你喜欢

  • 用ASP显示ACCESS数据库的GIF图象

    2008-11-16 18:09:00
  • 如何在MySQL查询结果集中得到记录行号

    2008-12-17 15:00:00
  • ASP关于SQL插入数据后获得当前ID

    2010-01-24 19:55:00
  • 多栏自适应布局问题浅谈

    2010-08-16 12:56:00
  • oracle 在一个存储过程中调用另一个返回游标的存储过程

    2009-09-26 18:54:00
  • WinHTTP Services 5.1 参考资料

    2010-03-27 20:49:00
  • 网站设计应当让用户选,别让用户想

    2008-03-19 12:01:00
  • 怎样在GoDaddy-Linux主机上使用JSP连接到MySQL数据库

    2010-04-21 12:38:00
  • 加密处理使密码更安全[CFS编码加密]

    2008-03-19 13:30:00
  • 关于SQL中CTE(公用表表达式)(Common Table Expression)的总结

    2012-08-21 10:22:21
  • 正则表达式结合数组提取文章中的文件名

    2007-10-12 13:59:00
  • JScript下Array对象的性能问题

    2009-02-15 12:28:00
  • 再谈 Web 字体的现状与未来[译]

    2009-11-24 13:55:00
  • 基于鼠标点击跟踪的用户点击行为分析

    2008-04-24 19:22:00
  • 官方是这样定义 DOCTYPE HTML PUBLIC 的

    2007-05-31 09:43:00
  • sql server 视图作用

    2009-01-05 13:53:00
  • SQL Server数据库备份出错及应对措施

    2009-04-20 17:02:00
  • 怎样修改 MySQL数据库中的密码

    2008-11-27 15:35:00
  • Dreamweaver量身打造Wordpress留言板(二)

    2009-12-12 17:35:00
  • 如何将数据访问页绑定到断开连接的 ADO 记录集上?

    2009-12-03 20:07:00
  • asp之家 网络编程 m.aspxhome.com