服务端合并和压缩JS和CSS文件

来源:随网之舞 时间:2010-06-11 18:23:00 

Web性能优化最佳实践中最重要的一条是减少HTTP请求,它也是YSlow中比重最大的一条规则。减少HTTP请求的方案主要有合并JavaScript和CSS文件、CSS Sprites、图像映射(Image Map)和使用Data URI来编码图片。CSS Sprites和图像映射现在已经随处可见了,但由于IE6和IE7不支持Data URI以及性能问题,这项技术尚未大量使用。目前大部分网页中的JavaScript和CSS文件数量和开发时一致,少量的网页会根据实际情况采取本地合并,这些合并中相当多的是有选择地手动完成,每次新的合并都需要重新在本地完成并上传到服务器,比较的随意和繁琐,同样文件的压缩也有类似的情况。而利用服务端的合并和压缩,我们就可以按照开发的逻辑尽可能让文件的颗粒度变小,利用网页中URL的规则来自动实现文件的合并和压缩,这会相当的灵活和高效。

YUI Combo Handler

2008年7月YUI Team宣布在YAHOO! CDN上对YUI JavaScript组件提供Combo Handler服务。Combo Handler是Yahoo!开发的一个Apache模块,它实现了开发人员简单方便地通过URL来合并JavaScript和CSS文件,从而大大减少文件请求数。比如在页面上使用YUI2的Rich Text Editor组件需要引入多个JavaScript文件,常用方式如下:

<script src="http://yui.yahooapis.com/2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/container/container_core-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/menu/menu-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/element/element-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/button/button-min.js"></script>
<script src="http://yui.yahooapis.com/2.8.0r4/build/editor/editor-min.js"></script>


而使用Combo Handler服务之后,则上述的代码可以写为:

<script src="http://yui.yahooapis.com/combo?
2.8.0r4/build/yahoo-dom-event/yahoo-dom-event.js&
2.8.0r4/build/container/container_core-min.js&
2.8.0r4/build/menu/menu-min.js&
2.8.0r4/build/element/element-min.js&
2.8.0r4/build/button/button-min.js&
2.8.0r4/build/editor/editor-min.js"></script>


除了代码的可读性稍稍有一点点降低外,使用Combo Handler服务大大的降低了HTTP请求数,同时也减少了URL代码量,这对于Web性能优化来讲至关重要。所以,随后YUI从2.6.0开始,其核心组件YUI Loader内置了Combo Handling功能,即使用YUI Loader时,通过配置combine属性就可以把要加载的多个JavaScript或CSS文件按照使用Combo Handler服务的形式合并起来,这时只要静态文件的服务器支持Combo Handler就行了。在YUI中当combine配置为true时,CDN默认是使用Yahoo! CDN(http://yui.yahooapis.com),所以没有任何问题。这正是YUI最迷人的地方之一。

遗憾的是http://yui.yahooapis.com在中国的速度并不佳,本来中国雅虎提供http://cn.yui.yahooapis.com/ ,但尚未提供Combo Handler服务,同时因种种原因,其更新在YUI 2.7.0之后就停滞了。更糟糕的是Yahoo!开发的支持Combo Handler的Apache模块虽然据传有计划开源,但至少现在依旧是私有技术,要使用就需要自己实现类似功能,所以国内类似技术的应用并不太多。

标签:服务器,压缩,CSS,Minify
0
投稿

猜你喜欢

  • 系统截图 Android 2.1对比Android 2.2

    2010-05-27 10:35:00
  • Discuz!7.0如何修改首页版块间距

    2009-07-07 10:05:00
  • NETWARE服务器随机存储器的扩展

    2010-05-13 18:09:00
  • 谷歌测试搜索结果新界面 明年或将推出(图)

    2009-11-20 17:39:00
  • 如何从Google索引中删除网页索引

    2008-05-01 12:28:00
  • 如何SEO才是最好的

    2008-02-01 13:02:00
  • (原创)最合理最精准的seo关键词选择

    2009-07-08 11:14:00
  • 简单吸引她:10种提升站点蜘蛛爬行的方法

    2009-01-22 15:39:00
  • IIS建立FTP就真的那么弱吗

    2007-10-23 13:53:00
  • 流量决定不了你网站的兴衰成败

    2009-03-11 17:39:00
  • Google AdSense账号停止后:被滥用的愤怒与同情

    2007-11-23 17:12:00
  • 提高google adsense的点击次数经验

    2008-07-11 14:13:00
  • 国家网络电视台将在2010年元旦前后正式亮相

    2009-11-14 10:13:00
  • Windows Server 2008盛大开幕[下载]

    2008-02-28 12:36:00
  • 网站的诞生前和诞生后 我们应该做些什么

    2008-11-21 14:35:00
  • 淘宝推开放搜索瞄准百度 按交易额收佣金

    2010-11-17 19:30:00
  • 个人网站发展的三阶段

    2008-01-13 15:18:00
  • 在Linux环境中如何配置WU-FTP服务器

    2009-12-23 19:19:00
  • 修改discuz兼容自己开发的通行证

    2009-07-12 18:43:00
  • 基础学习:反向链接对搜索引擎优化的影响

    2009-01-13 11:46:00
  • asp之家 网站运营 m.aspxhome.com