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

当前位置: > 网页制作 > DIV+CSS特效 >

前端优化总结(2)

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

  5. 将CSS放在HEAD中

  如果将CSS放在其他地方比如BODY中,则浏览器有可能还未下载和解析到CSS就已经开始渲染页面了,这就导致页面由无CSS状态跳转到CSS状态,用户体验比较糟糕。除此之外,有些浏览器会在CSS下载完成后才开始渲染页面,如果CSS放在靠下的位置则会导致浏览器将渲染时间推迟。

  6. 异步请求Callback

  在某些页面中可能存在这样一种需求,需要使用script标签来异步的请求数据。类似:

  Javascript:

/*Callback函数*/ 
function myCallback(info){ 
//do something here 

  HTML:

<script type="text/javascript" src="http://abc.com/cb"></script>

  cb返回的内容:

myCallback('Hello world!');

      像以上这种方式直接在页面上写<script>对页面的性能也是有影响的,即增加了页面首次加载的负担,推迟了DOMLoaded和window.onload事件的触发时机。如果时效性允许的话,可以考虑在DOMLoaded事件触发的时候加载,或者使用setTimeout方式来灵活的控制加载的时机。

  7. 减少不必要的HTTP跳转

  对于以目录形式访问的HTTP链接,很多人都会忽略链接最后是否带’/',假如你的服务器对此是区别对待的话,那么你也需要注意,这其中很可能隐藏了301跳转,增加了多余请求。具体参见下图,其中第一个链接是以无’/'结尾的方式访问的,于是服务器有了一次跳转。

  

image

  图1.3

  8. 避免重复的资源请求

  这种情况主要是由于疏忽或页面由多个模块拼接而成,然后每个模块中请求了同样的资源时,会导致资源的重复请求。出现的几率不大,但是还是要注意排查,不然可能会出现如下局面,来自这里。

  

image

  图1.4

  图1.4中,同一个JS在一个页面中请求了9次,全是200请求,当然这个算比较极端的情况了。

  二、代码级优化

  1. Javascript

  (1). DOM

  DOM操作应该是脚本中最耗性能的一类操作,例如增加、修改、删除DOM元素或者对DOM集合进行操作。如果脚本中包含了大量的DOM操作则需要注意以下几点:

  a. HTML Collection

  在脚本中document.images、document.forms、getElementsByTagName()返回的都是HTMLCollection类型的集合,在平时使用的时候大多将它作为数组来使用,因为它有length属性,也可以使用索引访问每一个元素。不过在访问性能上则比数组要差很多,原因是这个集合并不是一个静态的结果,它表示的仅仅是一个特定的查询,每次访问该集合时都会重新执行这个查询从而更新查询结果。所谓的“访问集合”包括读取集合的length属性、访问集合中的元素。

  因此,当你需要遍历HTML Collection的时候,尽量将它转为数组后再访问,以提高性能。即使不转换为数组,也请尽可能少的访问它,例如在遍历的时候可以将length属性、成员保存到局部变量后再使用局部变量。

  b. Reflow & Repaint

  除了上面一点之外,DOM操作还需要考虑浏览器的Reflow和Repaint,因为这些都是需要消耗资源的,具体的可以参加以下文章:

  

  

  

  (2). 慎用with

       with(obj){ p = 1}; 代码块的行为实际上是修改了代码块中的,将obj放在了其作用域链的最前端,在with代码块中访问非局部变量是都是先从obj上开始查找,如果没有再依次按作用域链向上查找,因此使用with相当于增加了作用域链长度。而每次查找作用域链都是要消耗时间的,过长的作用域链会导致查找性能下降。

  因此,除非你能肯定在with代码中只访问obj中的属性,否则慎用with,替代的可以使用局部变量缓存需要访问的属性。

  • · 谈CSS样式优化  CSS Lint,lint是线头的意思,大概意思就是说要找出我们写的css代....

About D8

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