说实话,这篇文章和asp.net mvc网站关系并不大,因为这几乎是所有网站的一个通用标准了。而且很惭愧的是,我们的网站 的Yslow评分按照Classic V1的标准也只有D,而且很多方法也是百度, google来的,所以谈不上原创,更多的是方法汇总。但愿能抛砖引玉,让高手也多说说。
前两篇文章 asp.net mvc速度优化 -- 页面缓存 和asp.net mvc速度优化 -- memcache主要解决的是后台代码的事情,这篇文章更多从网站配置和前端方面说说。
yslow是YAHOO网页加速的14条优化法则。更多相信可以参考百度文库的介绍Firefox针对这14条法则有一个插件叫Yslow,前提是需要安装Firebug.Firebug和Yslow的安装都是从Firefox的工具->附加组件中安装,具体细节就不再赘述了。具体是哪14条法则呢,看截图:
1.减少HTTP的访问次数,这个是最难的,因为要涉及很多细节,本文会描述。
2.使用CDN, 内容分发网络。这个没做过,小站点和个人网站貌似也做不起,但淘宝对这个很有
研究,可以关注他们的博客
3.增加Expires headers, 设置页面元素(图片,js,css...)的过期时间,设置了之后,客户端会缓存
。
4. 使用gzip压缩页面元素,这个蛮给力的,一会儿大家看截图就知道了。
5. 把CSS放在顶部,目的是让页面可以顺序加载,不会很乱,另外也避免页面重画,这个不说
了。
6. 把Javascript放在底部,JS是串行加载的(阻塞式),这个也不说了。
当然jquery.js等东东还是放在<head>..</head>之间吧。
7. 避免使用CSS expressions, 这个还是不说了。
8. 把CSS和Javascript放到外部文件中,因为外部文件可以缓存,另外也便于代码维护。
9. 减少DNS的查询次数,这个没做过,天生就是A,可能以后会遇到问题。
10. 最小化 Javascript和CSS代码。
11. 避免URL重定向,原则是就是说不要在页面上存在 http://www.incity.me 和 http://www.incity.me/。
12. 删除重复的Javascript和CSS的脚本,这个是废话,但实际上可能由于粗心会存在这个问题。
13. 配置ETags,这里会介绍IIS如何配置ETags.
14. 其实还有个是缓存AJAX.
总的来说,就是减少javascript,css,image的数量,尽量整合,只是需要在代码维护和性能之间做好平衡。
1.合并Javascript文件。对于小型或者中型站点,以使用jquery为例,我觉得就应该只要三个js文件:jquery.js, jquery.extension.js, yourproject.js. 其中jquery.js代表你的js版本, jquery.extension.js是把其他所有使用jquery扩展的放到一个文件,jquery.ui.js + jquery.calander.js + jquery.xxx.js => jquery.extension.js, 而project.js则只包含你项目的js.
<head>
<script src="jquery.js" />
<script src="jquery.extension.js" />
<script src="yourproject.js" />
</head>
2.合并CSS文件,最好不要超过两个,一般中小型站点就一个site.css即可。
3.使用CSS Sprite将多张小图片(特指样式图片)整合到一张大图片里面,这里介绍一个自动生成CSS Sprite的网站, 这点很重要,因为图片往往是耗时最多的。
IIS 管理器->HTTP 响应标头->设置常用标头,但这个指标的评分貌似不是很稳定,还在研究中。。。
首先观察下使用Gzip前后的对比:
如何配置?
IIS 管理器 -> 压缩 (需要注意的是,不要对图片进行Gzip压缩,因为Gzip压缩算法本身也要耗费服务器的时间)
其实这里是Disable Etag,
1.下载一个Remtag.dll.
2.IIS管理器 -> ISAPI筛选器,配置好后,重启IIS就看到效果了。