JavaScript性能优化--创建文档碎片

作者:66 来源:CssRain 时间:2009-12-04 12:41: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
投稿

猜你喜欢

  • 从浏览器想开去

    2008-07-29 12:52:00
  • ASP验证码的实现原理及源码

    2007-10-02 12:14:00
  • XMLHttpRequest的浏览器兼容代码写法

    2008-09-02 10:46:00
  • 在MySQL中获得更好的全文搜索结果

    2008-05-09 10:38:00
  • 如何增大MYSQL数据库连接数

    2010-10-25 20:28:00
  • ASP用csDrawGraph组件制作饼图、柱状图

    2008-04-25 22:58:00
  • 如何“看看”服务器上的那个文件还在不在?

    2009-11-02 20:17:00
  • 说说页面中header的XHTML结构选择

    2008-06-09 12:49:00
  • 从零开始写jQuery框架

    2008-12-24 13:37:00
  • 经验:解决DB2中出现的SQL1032N错误现象

    2009-09-02 14:10:00
  • [翻译]标记语言和样式手册 Chapter 15 为body指定样式

    2008-02-21 12:36:00
  • ASP实现下载系统防盗链方法

    2008-02-01 14:05:00
  • FrontPage XP设计教程3——网页的布局

    2008-10-11 12:20:00
  • 思考如何提高交互设计水平?

    2009-12-08 12:18:00
  • MySQL数据库磁盘优化

    2008-11-24 17:29:00
  • PL/SQL编程经验小结开发者网络Oracle

    2010-07-18 13:27:00
  • 请注意页面head区域的编码是不是规范

    2008-08-06 13:14:00
  • WEB2.0网页制作标准教程(8)CSS布局入门

    2007-09-11 13:21:00
  • 土豆网前端概况

    2008-01-24 12:06:00
  • css设计小巧三条

    2008-01-21 13:04:00
  • asp之家 网络编程 m.aspxhome.com