Javascript程序优化(4)

作者:Grace 来源:Grace 时间:2008-06-02 13:12:00 

DOM 操作

节约 DOM 操作

Javascript 对 DOM 的处理,可能是最耗费时间的操作之一。每次 Javascript 对 DOM 的操作,浏览器都会改变页面的表现、重新渲染页面,从而有明显的时间损耗。比较环保的做法就是尽可能不在 DOM 中进行 DOM 操作。

请看下面的例子,为 ul 添加 10 个条目

var oUl = document.getElementById("ulItem");

for (var i = 0; i < 10; i++) {
    var oLi = document.createElement("li");
    oUl.appendChild(oLi);
    oLi.appendChild(document.createTextNode("Item " + i);
}

乍看起来似乎无懈可击,但是这段代码的确有问题。首先是循环中的 oUl.appendChild(oLi); 的调用,每次执行过后浏览器就会重新渲染页面;其次,给列表添加添加文本节点(oLi.appendChind(document.createTextNode("Item " + i);),也这会造成页面重新渲染。每次运行都会造成两次页面重新渲染,总计 20 次。

要解决这个问题就如上面所言的,减少 DOM 操作,将列表项目在添加好文本节点以后再添加。下面的代码就可以与上述的代码完成同样的任务。

var oUl   = document.getElementById("ulItem");
var oTemp = document.createDocumentFragment();

for (var i = 0; i < 10; i++) {
    var oLi = document.createElement("li");
    oLi.appendChild(document.createTextNode("Item " + i);
    oTemp.appendChild(oLi);
}

oUl.appendChild(oTemp);

遵循标准的 DOM

说点书中没有的(照本宣科完毕),Javascript 其实在寻找节点(Node)也会花上一段时间。对 Web 标准友好的 (x)html 文档相对杂乱文章的页面来说,Javascript 执行速度两者也会有所差别。

浏览器处理页面有模式之分,这也许也是为什么要编写遵循 Web 标准的页面的原因之一。具体信息可以参考这里和一些言论。

缓存 Ajax

Ajax 虽然提供了页面异步请求调用,但别忘记了它还是访问服务器的。Javascript 作为驱动层本身可以作为缓存使用,虽然在页面重新载入后就会被释放,但对于服务器而言这是一个好的消息。

结束语

不知不觉就写了那么多,很多东西都是书上照本宣科的。《Javascript 高级程序设计》的确是一本不可多得的好书,建议大家有机会都可以去看看。这本书不贵,59 RMB(可能在别的地方还有打折),对于烟民而言也就一条双精度红喜,不过它可比香烟所能带来的快感多得多。

标签:程序,javascript,优化
0
投稿

猜你喜欢

  • SQL Server中索引使用及维护

    2008-11-25 11:13:00
  • Excel和Access之间的数据交换

    2008-11-20 16:53:00
  • asp 在线备份与恢复sql server数据库的代码

    2010-07-31 18:52:00
  • 亚马逊购物用户体验分析 (二)

    2009-10-25 12:48:00
  • WEB设计经验-来自Microsoft

    2008-05-15 07:30:00
  • 网页设计中的层次感

    2007-11-05 18:19:00
  • QQ连连看 for iPhone 设计实录分享

    2010-09-25 12:54:00
  • SQLServer 连接 EXCEL

    2009-07-09 19:00:00
  • 讲解使用SQL Server升级顾问的详细步骤

    2009-01-04 14:14:00
  • asp获取客户端的MAC地址

    2007-08-17 10:58:00
  • 不能安装SQL Server 2005的问题及解决方法

    2008-12-26 17:41:00
  • 设计之外随谈

    2009-06-16 14:38:00
  • 利用sql函数生成不重复的订单号的代码

    2012-01-05 19:02:55
  • MySQL Basis 常用命令

    2010-11-11 11:59:00
  • 在 SQL Server 数据库开发中的十大问题

    2009-07-02 16:39:00
  • mysql基础教程:安装与操作

    2009-07-30 08:18:00
  • 纯ASP(VBscript)写的全球IP地址搜索程序

    2007-09-27 13:28:00
  • 首页访问感受提升三步曲

    2007-12-13 20:36:00
  • 如何正确显示模式对话框showModalDialog中的中文?

    2010-06-28 18:24:00
  • SQL Server 2005 输入框不能输入中文问题

    2010-02-04 09:14:00
  • asp之家 网络编程 m.aspxhome.com