您现在的位置是:芭奇站群管理系统 > 优化技巧 > -> 优化网站加载速度的34条法则研究

优化网站加载速度的34条法则研究

时间:2010-05-19 22:54

  雅虎给出了优化网站加载速度的34条法则(包括yslow规则22条)详细说明,下载转发ponytail的译文(来自帕兰映像)。

  1.minimizehttprequests减少http请求

  图片、css、script、flash等等这些都会增加http请求数,减少这些元素的数量就能减少响应时间。把多个js、css在可能的情况下写进一个文件,页面里直接写入图片也是不好的做法,应该写进css里,利用csssprites将小图拼合后利用background来定位。

  2.useacontentdeliverynetwork利用cdn技术

  cdn确实是好东西,8过服务器提供商的这项服务一般是要收费的,我以前买的国内空间是有这个的但是我当时根本不知道啥用,现在没了。。。

  3.addanexpiresoracache-controlheader设置头文件过期或者静态缓存

  浏览器会用缓存来减少http请求数来加快页面加载的时间,如果页面头部加一个很长的过期时间,浏览器就会一直缓存页面里的元素。不过这样如果页面里的东西变动的话就要改名字了,否则用户端不会主动刷新,看自己衡量了~这项可以通过修改.htaccess文件来实现。

  4.gzipcomponentsgzip压缩

  gzip格式是一种很普遍的压缩技术,几乎所有的浏览器都有解压gzip格式的能力,而且它可以压缩的比例非常大,一般压缩率为85%。压缩没压缩,可以到这里做下测试。

  5.putstylesheetsatthetop把css放顶部

  让浏览者能尽早的看到网站的完整样式。

  6.putscriptsatthebottom把js放底部

  网站呈现完毕后再进行功能设置,当然这些js要在你的加载过程中不影响内容表现。

  7.avoidcssexpressions避免cssexpressions

  css表达式很可怕,这个只被ie支持的东西执行时候的运算量非常大,你移动一下鼠标它都要进行重计算的,但有时候为了做浏览器的兼容必须要用到这个ie6去死去死!~

  8.makejavascriptandcssexternal将js和css外链

  前面讲到了缓存这个事情,一些较为公用的js和css,我们可以使用外链的形式,譬如我就是从google外链来的jquery文件,如果我的浏览者在浏览别的使用了这个外链文件的网站时已经下载并缓存了这个文件,那么他在浏览我的网站的时候就不需要再进行下载了!~

  9.reducednslookups减少dns查找

  貌似是要减少网站从外部调用资源,我的google分析和picasa的外链图片都算在里面了。

  10.minifyjavascriptandcss减小js和css的体积

  写js和css都是有技巧的,用最少的代码实现同样的功能,减少空白,增强逻辑性,用缩写方式等等,当然也有不少工具也能够帮你实现这一点。

  11.avoidredirects避免重定向

  再写入链接时,虽然”abcdtoday-s-ooxx.com”和”abcdtoday-s-ooxx.com/”仅有一个最后的”/”只差,但是结果是不同的,服务器需要花时间把前者重定向为后者然后进行跳转,这个要自己注意,也可以在apache里用alias或者mod_rewrite或者directoryslash解决。

  12.removeduplicatescripts删除重复脚本

  重复调用的代码浏览器并不会识别忽略,而是会再次运算一遍,这当然是大大的浪费。

  13.configureetags配置etags

  搞不清楚咋回事,总之我是在.htaccess里把它删除了。

  14.makeajaxcacheable缓存ajax

  ajax是实时响应的,在浏览器接收到新的数据前,旧的数据被缓存,这样能够更好的提高效率。

  15.flushthebufferearly尽早的释放缓冲

  当用户进行页面请求时,服务器端需要花费200到500毫秒时间来拼合html,将写在head与body之间,释放缓冲,这样可以将文件头先发送出去,然后再发送文件内容,提高效率。

  16.usegetforajaxrequests用get方式进行ajax请求

  get方法和服务器只有一次交互(发送数据),而post要两次(发送头部再发送数据)。

  17.post-loadcomponents延迟加载组件

  最先加载必须的组件进行页面初始化,然后再加载其他,yuiimageloader是很好的例子。

  18.preloadcomponents预加载组件

  提前加载以后可能用到的东西,和延迟加载并不冲突,它的目的是为后续请求提供更快的响应,参见google首页上的csssprites应用。

  19.reducethenumberofdomelements减少dom元素数量

  复杂的页面结构意味着更长的下载及响应时间,更合理更高效的使用标签来架构页面,是好的前端的必备条件。

  20.splitcomponentsacrossdomains跨域分离组件

  页面组件多个来源可以增大你的平行下载量,但注意不要过多,超过2-4个域名会引起上面说到的dns查找浪费。

  21.minimizethenumberofiframes减少iframe数量

  需要更有效的利用ifames。

  iframe优点:有利于下载缓慢的广告等第三方内容,安全沙箱,并行下载脚本

  iframe缺点:即使为空也会有较大资源消耗,会阻止页面的onload,非语义

  22.no404s不要出现404页面

  站点本身里(非搜索结果)出现404页面,无意义的404页面会影响用户体验并且会消耗服务器资源。

  23.reducecookiesize减小cookie

  cookie在服务器及浏览器之间的通过文件头进行交换,尽可能减小cookie体积,设置合理的过期时间,能够很好的提高效率。

  24.usecookie-freedomainsforcomponents对组件使用无cookie的域名

  对静态组件的cookie读取是一种浪费,使用另一个无cookie的域名来存放你的静态组件式一个好方法,或者也可以在cookie中只存放带www的域名。

  25.minimizedomaccess减少dom的访问次数

  js访问dom是很慢的,尽量不要用js来设置页面布局。

  26.developsmarteventhandlers开发灵活的事件处理句柄

  dom树上过多的元素被加入事件句柄的话,反应效率肯定会低,yui事件工具有一个onavailable方法可以帮助你灵活的设置dom事件句柄

  27.choose<link>over@import使用<link>而非@import

  在ie中使用@import就和在页面底部用<link>一样,我们前面说要把<link>放顶部的。

  28.avoidfilters避免过滤器的使用

  如果需要alpha透明,不要使用alphaimageloader,它效率低下而且只对ie6及以下的版本适用,用png8图片。如果你非要使用,加上_filter以免影响ie7+用户。

  29.optimizeimages优化图片

  将你的gif转为png8会是个减小体积的好办法,另外有很多方法处理你的jpg及png图片以达到优化效果。

  30.optimizecsssprites优化csssprites

  在csssprites中竖直并尽量紧凑的排列图片,尽量将颜色相似的图片排在一起,会减小图片本身的大小及提高页面图片显示速度。

  31.don’tscaleimagesinhtml不要在html中缩放图片

  图片要用多大的就用多大的,1000x1000的图片被width=”100′height=”100′以后,本身的kb数是不会减少的。

  32.makefavicon.icosmallandcacheable缩小favicon.ico的大小并缓存它

  站点的浏览器ico应该不是经常换吧,那就长时间的缓存它,并且最好控制在1k以下。

  33.keepcomponentsunder25k保证组件在25k以下

  iphone不能缓存25k以上的组件,并且这还是要在被压缩前。

  34.packcomponentsintoamultipartdocument将组件打包进一个多部分的文档中

  就好像在邮件中加入附件一样,一个http请求就够了,但是这一技术需要确保你的代理支持,iphone就不支持。

  资料转载,请注明四维互动提供相关信息。

  四维互动为企业提供全套seo服务,包括网站整站seo网站优化,网站后期维护管理,搜索引擎关键词优化,符合seo标准的网站建设,网络营销咨询等网站优化服务,咨询热线:13738710863热门阅读搜索引擎变化对于搜索引擎优…seo选取关键词的成败seo网站关键字优化的迷思?网站优化别过度迷恋alexa排名…当大家都优化好各种标签网站…大型网站的seo网站优化策略从百度、谷歌搜索引擎惩罚网…seo优秀经验学习四维互动:大中型网站如何推…四维互动浅析搜索引擎优化se…

  今天你菊子曰了么?分享到搜狐微博