控件中国网现已改版,您看到的是老版本网站的镜像,系统正在为您跳转到新网站首页,请稍候.......
中国最专业的商业控件资讯网产品咨询电话:023-67870900 023-67871946
产品咨询EMAIL:SALES@COMPONENTCN.COM

对《30个提高Web程序执行效率的好经验》的理解

作者:葡萄城 出处:葡萄城 2010年09月01日 阅读:

13. 在任何的代码段里,在局部变量范围外存放一个这个局部变量的引用。例如
      function foo(arr) {
      var a = ’something’;

      //变量 ‘a’ 对于下面的一段就是范围外变量,这个变量的引用在很多情况下会有用处。
      for (var i = 0, j = a, loopLen = arr.length; i < loopLen; i++) {
      //do something
      }
      }

没有理解这段的主要意思。

14. for(var i=0; i < someArray.length; i++) {…}的执行效率慢于for (var i=0, loopLen=someArray.length; i<loopLen; i++) {…}。

例子如下:

01 function testLoop1() {
02 var someArray = new Array();
03 for (var i=0; i < 50000; i++) {
04 someArray.push(i);
05 }
06 var startTime = new Date();
07 for(var j=0; j < someArray.length; j++) var value = someArray[j];
08 document.getElementById('divShowTime1').innerHTML = '耗时1:' +  (new Date() - startTime) + 'ms';
09 }
10 function testLoop2() {
11 var someArray = new Array();
12 for (var i=0; i < 50000; i++) {
13 someArray.push(i);
14 }
15 var startTime = new Date();
16 for(var j=0,loopLen=someArray.length; j<loopLen; j++) var value = someArray[j];
17 document.getElementById('divShowTime2').innerHTML = '耗时2:' +  (new Date() - startTime) + 'ms';
18 }

 

这条也很好理解,第一种方式比第二种方式多了取Array长度的步骤。

15. 在HTTP头信息里加入缓存控制过期和最大存活时间标记。

没有补充

16. 优化CSS。要使用<link>方式,而不要使用@import方式。请参考这个优秀的文档http://www.slideshare.net/stubbornella/object-oriented-css

没有补充

17. 使用CSS技术来优化图片资源

减少图片链接个数,减少网络传输压力。

18. 用GZip方式压缩 .js 和 .css 文件。如果你使用的是Apache,在 .htaccess 里设置压缩方式,你的HTML, XML 和 JSON 也同时会被压缩。

AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/x-javascript application/json

减少传输的压力,增加响应速度。对小型站点,js和css文件不是很大,效果不明显。

19. 使用JavaScript压缩工具。除了使用YUI和JSMin外,你还可以试一试Google Closure http://closure-compiler.appspot.com/home (感谢: James Westgate, 一位读者)

和上面类似,现在有好多JS压缩和混淆的工具。

20. 优化每个页面上的各种资源,把它们拆分到各个子域上,这么它们就能够并行下载。请参考http://yuiblog.com/blog/2007/04/11/performance-research-part-4/

没有补充。

21. 将CSS样式表放在页面的最顶端,这样能方便包括IE在内的浏览器进行解析。

没有补充。

22. 尽量将DOM结构保持的越简单越好。DOM的体积会影响相关的操作效率,像查找, 遍历,DOM改动都有影响。document.getElementsByTagName(’*').length这 个值越小越好。

没有补充。

23. 注意你使用的选择器。例如,如果你想获取一个ul下的直接子元素,使用jQuery(”ul > li”)而不要使用jQuery(”ul li”)

更快的查找速度,遍历的元素少。

24. 当切换元素的可见性时(display),请记住:element.css({display:none})的 速度快于element.hide() 和 element.addClass(’myHiddenClass’)。 除非在一个循环里,我选择element.addClass(’myHiddenClass’), 这样会使代码更简洁 – 不要使用 inline CSS 和 JavaScript。

没有补充。

25. 当你使用完对DOM的引用变量后,要把它置为NULL。

资源回收。

26. 使用AJAX时,GET的执行效率高于POST。所以要尽量使用 GET 方式。只是要注意一点,IE只允许你用GET传送2K的数据。

同样的信息,GET方式传输,使用更少的数据量,所以用GET方式效率高。但是GET方式的安全性不高,传输的数据量受限制。

27. 小心使用脚本动画。没有硬件的支持,动画会执行的很慢。尽量避免使用那些没有实际价值的动画效果。

这是每个使用过脚本动画都深有体会的,不过,我认为HTML5中canvas会广泛地应用,canvas能做出令人赏心悦目的动画效果,值得大家关注。

28. 如果你的background-image对于这个图片的容器太小的话,请避免使 用background-repeat。如果你的背景图片需要来回填充很多次才能充满背景,那么将background-repeat属性设置成background-image 和repeat-x 或 repeat-y来 达到填充背景的效果的做法是不明智的,这种填充方式的效率特别的低。你应该尝试使用一个足够大的图片来做background-image并 且使用background-repeat: no-repeat。

好建议,没有补充

29. 布局时不要使用<table>。 <table>在浏览器完全把它画出来之前需要反复绘制好几次。因为DOM中<table>是很少见的一种之后输出的会影响之前输出的显示效果的元素。对于表格数据来说,你可 以使用table-layout:fixed; 这是一种更有效的现实算法,根据CSS 2.1技术说明,这种写法可以让表格一行一行的输出。

除了上面的原因外,table在样式继承,offset值计算上,在多浏览器中的表现上,都有不少诡异的差异,例如:如果在td中有个元素div,则取div的offsetParent返回是td元素,并不是我们期望的具有position属性的父元素。

30. 尽可能的使用原始JavaScript。限制JavaScript框架的使用。

这一条的准则,要看实际的情况,如果项目非常小,则如果使用框架,框架中大部分的code是没有用的,这样就额外增加了加载时间。如果是大型项目,则使用成熟框架,如Jquery等,不仅能减少开发时间和成本,也减少了后续维护的成本。

热推产品

  • ActiveReport... 强大的.NET报表设计、浏览、打印、转换控件,可以同时用于WindowsForms谀坔攀戀Forms平台下......
  • AnyChart AnyChart使你可以创建出绚丽的交互式的Flash和HTML5的图表和仪表控件。可以用于仪表盘的创......
首页 | 新闻中心 | 产品中心 | 技术文档 | 友情连接 | 关于磐岩 | 技术支持中心 | 联系我们 | 帮助中心 Copyright-2006 ComponentCN.com all rights reserved.重庆磐岩科技有限公司(控件中国网) 版权所有 电话:023 - 67870900 传真:023 - 67870270 产品咨询:sales@componentcn.com 渝ICP备12000264号 法律顾问:元炳律师事务所 重庆市江北区塔坪36号维丰创意绿苑A座28-5 邮编:400020
在线客服
在线客服系统
在线客服
在线客服系统