日期:2013-10-14  浏览次数:20784 次

YSlow是yahoo美国开发的一个页面评分插件,非常的棒,从中我们可以看出我们页面上的很多不足,并且可以知道我们改怎样却改进和优化。

细心研讨了下YSlow的评分规则。

次要有12条:

1. Make fewer HTTP requests 尽可能少的http请求。。我们有141个请求(其中15个JS请求,3个CSS请求,47个CSS background images请求),多的可怕。思考了下,为什么把这个三种请求过多列为对页面加载的重要不利要素呢,而过多的IMG请求并没有列为不利要素呢?

发现原来这些请求都是可以避免的。

15个JS和3个CSS完全可以通过特殊的办法进行合并(这个技术部曾经帮我们处理了,实在是太感激了,嘿嘿。),这样合并当前,普通情况下页面上只会出现一个JS和一个CSS(对JS的封装得有一定的要求)。

但是47个CSS background images请求改怎样处理呢?为什么页面上的纯IMG请求时合理的,而CSS background images请求过多就是不利要素了呢。这个我想了很久,总算明白,原来是这样的:

普通页面上的ICON,栏目背景啊,图片按钮啊,我们都会用图片CSS背景来实现,而普通这个图片CSS背景用到的图片都是比较小的,所以完全可以把这些图片合并成一个绝对比较大的图片,这样页面上只会出现一个CSS background images请求,最多也就2-3个。后来细心看了下雅虎美国的页面,他们的确也是这样做的,虽然这样做需求花一定的时间来有规则的合并这些ICON,栏目背景,图片按钮,以方便CSS调用,但是这样做绝对是合算的,而且是有必要的,YSlow也是极力推荐的。

2.Use a CDN 这项我们的评分是F级,最低。说实在的,我刚开始什么是CDN都不知道。后来查了GOODLE才知道。CDN的全称是Content Delivery Network,即内容分发网络。其目的是通过在现有的Internet中添加一层新的网络架构,将网站的内容发布到最接近用户的网络”边缘”,使用户可以就近取得所需的内容,处理Internet网络拥堵的情况,提高用户访问网站的呼应速度。从技术上全面处理由于网络带宽小、用户访问量大、网点分布不均等缘由所形成的用户访问网站呼应速度慢的问题。

看来上述的解释后,基本上明白了CDN是怎样回事,后来咨询了下中文站点SA,得知我们网站目前的确还没有做CDN的优化,但是听说我们有愈加先进的技术来处理类似的问题(具体什么技术那就保密了),但是毕竟CDN也是个相当不错的技术,所以在我们先进技术的基础上在做CDN优化,肯定比如今更好,嘿嘿。听说SA明年会做几个点的CND。

3. Add an Expires header置过期的HTTP Header.设置Expires Header可以将脚本, 款式表, 图片, Flash等缓存在浏览器的Cache中.

其实我们网站也做了这个优化,至少图片在这个上做过优化,但是没有做完全。我们的CSS和JS都还没有做过优化,倒是外部引入的一个广告JS做了,呵呵。其实设置过期的HTTP Header 更应该做在脚本, 款式表, Flash上.不过听说这个SA也是没有做的,但是有一定的风险,由于JS和CSS是有一定的逻辑,如果服务器端和客户端都存在缓存的话,万一出了什么问题,对我们当前查找问题的所在和添加难度,不过我想两者中是可以权衡和并存的。

4. Gzip components 对我们的页面内容进行Gzip格式的紧缩,Gzip格式是一种很普遍的紧缩技术,几乎所有的浏览器都有解压Gzip格式的能力,而且它可以紧缩的比例非常大,普通紧缩率为85%,就是说服务器端100K的页面可以紧缩到25K左右的Gzip格式的数据发给客户端,客户端收到Gzip格式的数据后自动解紧缩后显示页面。

这点我们网站基本上是100%做到了,但是我们这项的评分并没有达到想象中的A级,缘由是出在我们的外部链接,比如我们首页,有外部的广告投放JS,这个JS说拥有的网站是没有做过GZIP优化,连累了我们网站,所以我们也只要B,或者C级。

5. Put CSS at the top 把CSS外部链接放到页面的顶部。

其实这个准绳我们普通都恪守的,如果把CSS外部链接作为逻辑的一部分出如今页面头部以下,我团体觉得这个本身就是个错误。还好,我们的页面基本上都做到了,可是有些页面比如LIST页面,还是出现了和逻辑挂钩的CSS链接,缘由是为了处理一些本来就不合理的产品逻辑。所以,我们WEB前端工程师有义务杜绝这些不合理的产品逻辑破坏我们的页面结果及页面加载速度,不能为了实现而实现。