提高你的DHTML性能

[英文原文] msdn.microsoft.com/library/en-us/dnwebgen/html/dhtmlperf.asp?frame=true [中文译文] www.microsoft.com/china/msdn/msdnonline/features/articles/dhtmlperf.asp 1.尽量使用同一个脚本函数来改变html内容。如果有多个事件触发,尽量只改变同一个地方。 2.尽量把内容集中起来一次更新。如果不是特别需要有html的内容,尽量使用innertext代替innerhtml slow: divupdate.innerhtml = ; for ( var i=0; i<100; i++ ) { divupdate.innerhtml += this is a slower method! ; } fast: var str=; for ( var i=0; i<100; i++ ) { str += this is faster because it uses a string! ; } divupdate.innerhtml = str; 3.更新文本内容时尽量使用innertext而不是dom的createtextnode slow: var node; for (var i=0; i<100; i++) { node = document.createelement( span ); node.appendchild( document.createtextnode( using createtextnode() ) ); divupdate.appendchild( node ); } fast: var node; for (var i=0; i<100; i++) { node = document.createelement( span ); node.innertext = using innertext property ; divupdate.appendchild( node ); } 4.尽量使用createelement 和 insertadjacentelement 方法,而不是 insertadjacenthtml slow: for (var i=0; i<100; i++) { divupdate.insertadjacenthtml( beforeend, uses insertadjacenthtml() ); } fast: var node; for (var i=0; i<100; i++) { node = document.createelement( span ); node.innertext = uses insertadjacentelement() ; divupdate.insertadjacentelement( beforeend, node ); } 5.在数目巨大的情况下,尽量使用innerhtml 来添加项 slow: var opt; divupdate.innerhtml = ; for (var i=0; i<1000; i++) { opt = document.createelement( option ); selupdate.options.add( opt ); opt.innertext = item + i; } fast: var str=; for (var i=0; i<1000; i++) { str += item + i + ; } str += ; divupdate.innerhtml = str; faster: var arr = new array(1000); for (var i=0; i<1000; i++) { arr[i] = item + i + ; } divupdate.innerhtml = + arr.join() + ; 6.使用dom来创建表格比tom(insertrow,insertcell)好的多 slow: var row; var cell; for (var i=0; i<100; i++) { row = tblupdate.insertrow(); for (var j=0; j<10; j++) { cell = row.insertcell(); cell.innertext = row + i + , cell + j; } } fast: var row; var cell; var tbody = tblupdate.childnodes[0]; tblupdate.appendchild( tbody ); for (var i=0; i<100; i++) { row = document.createelement( tr ); tbody.appendchild( row ); for (var j=0; j<10; j++) { cell = document.createelement( td ); row.appendchild( cell ); cell.innertext = row + i + , cell + j; } } 7.通用的操作,尽量放在一个单独的外部脚本文件里 8.约束你的动态属性(指setexpression的用法) 9.使用数据绑定来显示你的资料,你可以使用排序、过滤等操作来提供不同视图,但只需要访问一次服务器(减少频繁访问服务器的问题) 10.不要把自定义的属性加到document对象上,这会使得每次读取该属性时进行额外的重算。推荐加在window对象上 slow: for (var i=0; i<1000; i++) { var tmp; window.document.myproperty = item +i; tmp = window.document.myproperty; } fast: for (var i=0; i数值的转换 15.尽可能少的使用定时器(指settimeout,setinterval这些),而在同一个定时器里对所有要变化的对象进行操作
上一个:企业建站公司的挑选技巧是什么?
下一个:企业做网站应该如何购买选择空间
连城网站建设,连城做网站,连城网站设计