• [织梦吧]唯一域名:www.dedecms8.com,织梦DedeCMS学习平台.

当前位置: > 网页制作 > JavaScript >

LAMP 调优之:JavaScript 性能调优(7)

来源: www.dedecms8.com 编辑:织梦吧 时间:2012-02-07点击:

  浏览器 XPath 的搜索引擎会优化搜索效率,大大缩短结果返回时间。

  HTMLCollection 对象

  这是一类特殊的对象,它们有点像数组,但不完全是数组。下述方法的返回值一般都是 HTMLCollection 对象:

  document.images, document.forms

  getElementsByTagName()

  getElementsByClassName()

  这些 HTMLCollection 对象并不是一个固定的值,而是一个动态的结果。它们是一些比较特殊的查询的返回值,在如下情况下,它们会重新执行之前的查询而得到新的返回值(查询结果),虽然多数情况下会和前一次或几次的返回值都一样:

  Length 属性

  具体的某个成员

  所以,HTMLCollection 对象对这些属性和成员的访问,比起数组来要慢很多。当然也有例外,Opera 和 Safari 对这种情况就处理的很好,不会有太大性能问题。

  参考如下代码:

  清单 24. HTMLConnection 对象

  1.  var items = [“test1”, “test2”, “test3”, ……………… ]; 
  2.  for(var i = 0; i < items.length; i++){  
  3. ……………………………… 
  4.  }  
  5.  
  6.  var items = document.getElementsByTagName(“div”); 
  7.  for(var i = 0; i < items.length; i++){  
  8. …………………………………… .  
  9.  }  

  上述两端代码,下面的效率比起上面一段要慢很多,因为每一个循环都会有“items.length”的触发,也就会导致“document.getElementsByTagName(..)”方法的再次调用,这便是效率便会大幅度下降的原因。我们可以这样解决:

  清单 25. HTMLConnection 对象解决方案

  1. var items = document.getElementsByTagName(“div”);  
  2. var len = items.length 
  3. for(var i = 0; i < len; i++){  
  4. ………………………………… .  
  5. }  

  这样一来,效率基本与普通数组一样。

  动态创建 script 标签

  加载并执行一段 JavaScript 脚本是需要一定时间的,在我们的程序中,有时候有些 JavaScript 脚本被加载后基本没有被使用过 (比如:脚本里的函数从来没有被调用等等)。加载这些脚本只会占用 CPU 时间和增加内存消耗,降低 Web 应用的性能。所以推荐动态的加载 JavaScript 脚本文件,尤其是那些内容较多,消耗资源较大的脚本文件。

  清单 26. 创建 script 标签

  1. if(needXHR){  
  2. document.write(“<script type= ’ test\/JavaScript ’ src= 'dojo_xhr.js' >”);  
  3. }  
  4. if(dojo.isIE){  
  5. document.write(“<script type= ’ test\/JavaScript ’ src= 'vml.js' >”);  
  6. }  

About D8

  • ©2014 织梦吧(d8) DedeCMS学习交流平台
  • 唯一网址 www.DedeCMS8.com 网站地图
  • 联系我们 1170734538@qq.com ,  QQ