JavaScript性能优化 创建文档碎片(document.createDocumentFragment)


Posted in Javascript onJuly 13, 2010

在浏览器中,我们一旦把节点添加到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 相关文章推荐
IE和Firefox下event事件杂谈
Dec 18 Javascript
基于jquery实现状态限定编辑的代码
Feb 11 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
Nov 11 Javascript
JavaScript中的style.cssText使用教程
Nov 06 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
浅析jQuery操作select控件的取值和设值
Dec 07 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
Dec 27 Javascript
使用Electron构建React+Webpack桌面应用的方法
Dec 15 Javascript
基于vue 动态加载图片src的解决方法
Feb 05 Javascript
实战node静态文件服务器的示例代码
Mar 08 Javascript
JavaScript实现背景自动切换小案例
Sep 27 Javascript
vue实现图书管理系统
Dec 29 Vue.js
通过继承IHttpHandle实现JS插件的组织与管理
Jul 13 #Javascript
jQuery.Autocomplete实现自动完成功能(详解)
Jul 13 #Javascript
javascript中字符串拼接需注意的问题
Jul 13 #Javascript
转换json格式的日期为Javascript对象的函数
Jul 13 #Javascript
Jquery+WebService 校验账号是否已被注册的代码
Jul 12 #Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
Jul 11 #Javascript
不同浏览器的怪癖小结
Jul 11 #Javascript
You might like
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
Banner程序
2006/10/09 PHP
php获取CSS文件中图片地址并下载到本地的方法
2014/12/02 PHP
PHP curl 或 file_get_contents 获取需要授权页面的方法
2017/05/05 PHP
自写简单JS判断是否已经弹出页面
2010/10/20 Javascript
javascript放大镜效果的简单实现
2013/12/09 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript实现斗地主游戏的思路
2016/02/29 Javascript
JavaScript仿淘宝页面图片滚动加载及刷新回顶部的方法解析
2016/05/24 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
详解Angular的双向数据绑定(MV-VM)
2016/12/26 Javascript
基于JavaScript实现选项卡效果
2017/07/21 Javascript
详解Vue 的异常处理机制
2020/11/30 Vue.js
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
理解Python中的With语句
2015/02/02 Python
python smtplib模块发送SSL/TLS安全邮件实例
2015/04/08 Python
Python实例一个类背后发生了什么
2016/02/09 Python
Python作用域用法实例详解
2016/03/15 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
python爬取网易云音乐评论
2018/11/16 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
如何使用python socket模块实现简单的文件下载
2020/09/04 Python
Java的类与C++的类有什么不同
2014/01/18 面试题
工业设计专业个人求职信范文
2013/12/28 职场文书
入学生会自荐书范文
2014/02/05 职场文书
团代会主持词
2014/04/02 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
餐厅感恩节活动策划方案
2014/10/11 职场文书
金榜题名主持词
2015/07/02 职场文书
消防宣传标语大全
2015/08/03 职场文书
读完《骆驼祥子》的观后感!
2019/07/05 职场文书
拥有这5个特征人,“命”都不会太差
2019/08/16 职场文书
Python实现单例模式的5种方法
2021/06/15 Python
Python Django获取URL中的数据详解
2021/11/01 Python
JavaScript实现栈结构详细过程
2021/12/06 Javascript