新版本的Yslow共有22条指标,比原来的多了9条。还可以自定义规则,新版本Yslow有三个内置的规则:V2、V1、小型站和博客,V2的指标最 多,包括所有22项指标,而V1则只包括上一个版本的13条指标。你可以完全设置自己的规则,这样就可以比较灵活,也更客观实际的分析自己的网站。另外, 还增加了一些网站的优化工具,比如Smush.it、JS Minified、 JS Beautified等等。
1、Make fewer HTTP requests–更少的http请求,也就是说页面中尽量少的引用外部静态资源,js、css以及图片。80%的用户响应时间都是浪费在前端。而这些时间主要又是因为下载图片、样式表、JavaScript脚本、flash等文件造成的。减少这些资源文件的 Request请求数将是提高网页显示效率的重点。要做到这一点有很多方法,比如使用CSS Sprites整合图片、合并CSS文件(不需要划分为什么色彩样式、布局样式、文字样式之类的)、合并JS文件。
2、Use a CDN–使用CDN网络,将页面中的静态资源分布到离用户最近的网络节点上。 这是有关服务器线路的问题,我也不是太了解,放在国内的话大体上也就是电信、网通、双线、多线的意思了。
3、Add an Expires header–为静态资源文件增加过期时间,让用户通过本地缓存来更快的访问网站。设置静态文件的过期时间,最开始的时候我找了好久也没找到这个过期时间要怎么加,原来这个也不属于前端人员的范畴,找服务器管理人员去了解下吧。
4、Gzip components–压缩静态资源内容,减少网络传输时间。这个应该很熟悉了,Gzip的思想就是把文件先在服务器端进行压缩,然后再传输,在客户端再进行解压。对于当前的PC机配置来说,这点点的解压工程实在是微乎其微。不过跟上一条一样,也是属于服务器管理人员的范畴了。
5、Put CSS at the top–将CSS放在页面头部,能够更快渲染页面。这个很容易理解,而且绝大部分人也都会这么做的。无论是HTML还是XHTML还是CSS都是解释型的语言,而非编译型的。所以CSS到上方的话,那么浏览器解析结构的时候,就已经可以对页面进行渲染。
6、Put JS at the bottom–将JS放在页面底部,一般情况下JS的下载是阻塞模式的,放在页面顶部会阻塞其他资源的下载。跟上一条一样,很多人都习惯了把JS也放在头部,这样不仅会阻塞其它资源的下载,而且JS一般都是用来交互的,如果页面都还没有出来,何来的交互呢?所以JS还是要放到底部加载。
7、Avoid CSS expressions–不要使用CSS表达式,因为CSS表达式需要很多资源,有时甚至会造成页面假死。expressions其实就像是其它语言中的if……else……可以在CSS中进行逻辑判断,但是这样的代价是非常大的,曾经我为了满足IE6下的图片大小自适应用了这么个语句,结果页面慢如蜗牛。
8、Make JS and CSS external–将CSS和JS使用外部的独立文件。看起来跟第1条有点矛盾,不过这应该看具体情况了。javascript和css都有缓存,独立成外部文件的话,有利于提高用户再次访问时的效率。而某些 大站比如yahoo,会把CSS及JS都写在页面里,那是因为访问量太大,尽可能的减少请求数。如果你的网站访问量还不是那么地惊人的话,还是独立出来比 较好。
9、Reduce DNS lookups–减少DNS查找。这一点虽然也是服务器方面的问题,不过还是很好理解。也就是说不要把同一个网站的内容分散在不同的服务器上。比如说,一个图片站,因为空间大小的关系把某一部分图片放在了另一个服务器上,那么这一部分的图片在浏览的时候就会慢很多。
10、Minify JS–最小化压缩JS,减少JavaScript和CSS文件的体积。这个应该见得多了,我们应该经常会见到被压成一行的JS以及CSS文件,压缩工具在网上随处都可见。
11、Avoid redirects–避免无意义的跳转。这里有一种现象常常会被开发者所忽略,这种现象发生在当URL本该有斜杠(/)却被忽略掉时,这时候会返回一个301的状态码,然后浏览器重新发起一次请求,这其中就浪费掉了时间。
12、Remove duplicate scripts–去除重复的脚本,不光是文件,甚至是同功能的函数。 这个道理很浅显,我想也不用说明太多了。
13、Configure ETags–配置实体标签。Etag(Entity tags )实体标签。这个tag和你在网上经常看到的标签云那种tag有点区别。这个Etag不是给用户用的,而是给浏览器缓存用的。Etag是服务器告诉浏览器 缓存,缓存中的内容是否已经发生变化的一种机制。通过Etag,浏览器就可以知道现在的缓存中的内容是不是最新的,需不需要重新从服务器上重新下载。
14、Make AJAX cacheable设置AJAX的缓存。当前AJAX的应用越来越广泛,AJAX的信息读取是异步的,这也表示用户不一定会等待这异步的响应,为避免重复的AJAX请求,设置缓存是优化性能的一个好方法。
15、Use GET for AJAX requests用GET获取AJAX请求。又是一条有关AJAX的。AJAX的传值可用GET跟POST,在这里建议使用的是GET。
16、Reduce the number of DOM elements减少页面DOM节点。也就是讲究页面代码的简洁,一个复杂的页面不仅增大页面的体积,也会对JavaScript访问DOM元素产生影响。
17、Avoid HTTP 404 (Not Found) error避免404错误页面的出现。这个应该不用怎么解释了,不管从服务器资源还是用户体验上来说,都是不好的。
18、Reduce cookie size减少cookie的大小。cookie一般用于身份验证等用途,一般说来cookie被限制在4K以内,尽量控制 Cookie 的大小,不要塞入一些无用的信息。
19、Use cookie-free domains使用域名无关性的Cookie。这里是有关静态服务器的问题,主要是指一些静态文件比如说图片、CSS等等,比如说YAHOO,他的静态文件都在 yimg.com 上,客户端请求静态文件的时候,减少了 Cookie 的反复传输对主域名的影响。
20、Avoid AlphaImageLoader filter避免AlphaImageLoader滤镜的使用。这个几乎都是用在IE6下解决PNG透明的问题上的。而为了实现此效果而牺牲的性能来说,是很不合算的。
21、Do not scale images in HTML不要对图片进行缩放。也就是图片的实际大小大于他的显示必要,比如一个800*600的图片,而我们在页面上只显示的是400*300的大小,那么这便是一种服务器资源的浪费。
22、Make favicon small and cacheable使图标尽可能小,并使用缓存。这里指的是favicon.ico了,设置favicon.ico缓存可以避免频繁的页面请求。