本文转自:http://www.cnblogs.com/parry/archive/2011/01/28/Reduce_Http_Request_Using_Combres_For_Js_Css.html

在前端优化的各种金律铁规中,“减少客户端对资源的请求”都会在其中出现,刚好最近对网站做一些优化,使用了一下Combres组件,有点心得,遂整理成文。

园子中也有几篇Combres组件的介绍,如:Combres库学习小结以及部分源码分析使用Combres 库 ASP.NET 网站优化。可部署时参考起来显得有些简略,所以此文也算对此类文章的补充。

配置组件

此组件的一些作用和原理在我上面提及的两篇文章中有介绍,可以自行移步至对应的文章中查看。这里还有有作者介绍的一些详细的使用方法

下载Combres组件,下载下来的包里包含了DLL、帮助文件、源码和一些例子,我们现在直接来看如何部署。

在下载下来的\Binary\merged\中有一个Combres.dll,在readme文件中得知其对可能要用到的dll都进行了打包,如Combres.dll、fasterflect.dll、log4net.dll、ajaxmin.dll、 yahoo.yui.compressor.dll等等。

在项目中引用此dll,下面来配置下配置文件。

首先配置下web.config。

在configSections配置节下添加

1 <section name="combres" type="Combres.ConfigSectionSetting, Combres, Version=2.0.0.0, Culture=neutral, PublicKeyToken=49212d24adfbe4b4"/> 

在configuration配置节下添加Combres配置文件的路径,此文件的作用我们下面再说。

1 <combres definitionUrl="~/App_Data/combres.xml"/>

配置好了后应该像这样

1 <configSections> 2       <section name="combres" type="Combres.ConfigSectionSetting, Combres,  3     Version=2.0.0.0, Culture=neutral, PublicKeyToken=49212d24adfbe4b4"/> 4  </configSections> 5  <combres definitionUrl="~/App_Data/combres.xml"/>

还需要添加httpModules的节点

1 <httpModules> 2         <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule,  3     System.Web.Routing, Version=3.5.0.0, Culture=neutral,  4     PublicKeyToken=31BF3856AD364E35"/> 5 </httpModules>

注意:需要在项目中添加对System.Web.Routing的引用。

下面来配置Combres的配置文件,按照上面的路径配置,我们就在App_Data下添加combres.xml文件。

添加如下格式的配置文件。


 1 <?xml version="1.0" encoding="utf-8" ?>  2 <combres xmlns='urn:combres'>  3   <resourceSets url="~/combres.axd" defaultDuration="30"   4                                 defaultVersion="auto"   5                                 defaultDebugEnabled="auto" >  6     <resourceSet name="siteCss" type="css">  7       <resource path="~/styles/site.css" />  8       <resource path="~/styles/jquery-ui-1.7.2.custom.css" />  9     </resourceSet> 10     <resourceSet name="siteJs" type="js"> 11       <resource path="~/scripts/jquery-1.3.2.js" /> 12       <resource path="~/scripts/jquery-ui-1.7.2.custom.min.js" /> 13     </resourceSet> 14   </resourceSets> 15 </combres>    
  • defaultDuration 默认缓存的时间,单位为天数
  • defaultVersion 合并后的资源版本,在你修改了资源文件后需要对版本进行修改,你可以指定auto或者手动设置一个版本号
  • defaultDebugEnabled 调试的模式,为true时那么资源文件不进行压缩,开发时可以设置成true,上线后设置成false

具体添加压缩方法的配置节点,用于选择哪种方法对资源文件进行压缩


 1 <cssMinifiers>  2     <minifier name="yui" type="Combres.Minifiers.YuiCssMinifier, Combres">  3       <param name="CssCompressionType" type="string" value="StockYuiCompressor" />  4       <param name="ColumnWidth" type="int" value="-1" />  5     </minifier>  6   </cssMinifiers>  7   <jsMinifiers>  8     <minifier name="msajax" type="Combres.Minifiers.MSAjaxJSMinifier, Combres"   9     binderType="Combres.Binders.SimpleObjectBinder, Combres"> 10       <param name="CollapseToLiteral" type="bool" value="true" /> 11       <param name="EvalsAreSafe" type="bool" value="true" /> 12       <param name="MacSafariQuirks" type="bool" value="true" /> 13       <param name="CatchAsLocal" type="bool" value="true" /> 14       <param name="LocalRenaming" type="string" value="CrunchAll" /> 15       <param name="OutputMode" type="string" value="SingleLine" /> 16       <param name="RemoveUnneededCode" type="bool" value="true" /> 17       <param name="StripDebugStatements" type="bool" value="true" /> 18     </minifier> 19   </jsMinifiers>

要使用哪种压缩方法,在resourceSet或者在resource上添加相应的属性即可,配置后像下面这样


 1 <?xml version="1.0" encoding="utf-8" ?>  2 <combres xmlns='urn:combres'>  3   <cssMinifiers>  4     <minifier name="yui" type="Combres.Minifiers.YuiCssMinifier, Combres">  5       <param name="CssCompressionType" type="string" value="StockYuiCompressor" />  6       <param name="ColumnWidth" type="int" value="-1" />  7     </minifier>  8   </cssMinifiers>  9   <jsMinifiers> 10     <minifier name="msajax" type="Combres.Minifiers.MSAjaxJSMinifier, Combres"  11     binderType="Combres.Binders.SimpleObjectBinder, Combres"> 12       <param name="CollapseToLiteral" type="bool" value="true" /> 13       <param name="EvalsAreSafe" type="bool" value="true" /> 14       <param name="MacSafariQuirks" type="bool" value="true" /> 15       <param name="CatchAsLocal" type="bool" value="true" /> 16       <param name="LocalRenaming" type="string" value="CrunchAll" /> 17       <param name="OutputMode" type="string" value="SingleLine" /> 18       <param name="RemoveUnneededCode" type="bool" value="true" /> 19       <param name="StripDebugStatements" type="bool" value="true" /> 20     </minifier> 21   </jsMinifiers> 22   <resourceSets url="~/combres.axd" defaultDuration="30"  23                                 defaultVersion="auto"  24                                 defaultDebugEnabled="auto" > 25     <resourceSet name="siteCss" type="css" minifierRef="yui"> 26       <resource path="~/styles/site.css" /> 27       <resource path="~/styles/jquery-ui-1.7.2.custom.css" /> 28     </resourceSet> 29     <resourceSet name="siteJs" type="js"> 30       <resource path="~/scripts/jquery-1.3.2.js" minifierRef="msajax"  /> 31       <resource path="~/scripts/jquery-ui-1.7.2.custom.min.js" minifierRef="off" /> 32     </resourceSet> 33   </resourceSets> 34 </combres>

最后还需要在Global.ascx的Application_Start中添加加载的方法即可

1 protected void Application_Start(object sender, EventArgs e) 2 { 3     RouteTable.Routes.AddCombresRoute("Combres Route"); 4 }

记得在Global.ascx的头部要引入命名空间

1 <%@ Import Namespace="System.Web.Routing" %> 2 <%@ Import Namespace="Combres" %>

页面使用

1 <%@ Import Namespace="Combres" %> 2 <head runat="server"> 3     <title>Using Combres</title> 4     <%= WebExtensions.CombresLink("siteCss") %> 5     <%= WebExtensions.CombresLink("siteJs") %> 6 </head>

页面使用效果

当页面中引用了很多个js、css文件时,将都被合并成两个请求,以达到减少HTTP请求的目的。

 

作者:Parry            出处:http://www.cnblogs.com/parry/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

 

[转][前端优化]使用Combres合并对js、css文件的请求的更多相关文章

  1. JS&CSS文件请求合并及压缩处理研究(五)

    接上篇.在我们最终调用 @Html.RenderResFile(ResourceType.Script) 或者 @Html.RenderResFile(ResourceType.StyleSheet) ...

  2. Web性能优化之动态合并JS/CSS文件并缓存客户端

    来源:微信公众号CodeL 在Web开发过程中,会产生很多的js/css文件,传统的引用外部文件的方式会产生多次的http请求,从而加重服务器负担且网页加载缓慢,如何在一次请求中将多个文件一次加载出来 ...

  3. 前端js,css文件合并三种方式,bat命令

    前端js,css文件合并三种方式,bat命令 前端js文件该如何合并三个方式如下:1. 一个大文件,所有js合并成一个大文件,所有页面都引用它.2. 各个页面大文件,各自页面合并生成自己所需js的大文 ...

  4. ASP.NET MVC 4 Optimization的JS/CSS文件动态合并及压缩

    JS/CSS文件的打包合并(Bundling)及压缩(Minification)是指将多个JS或CSS文件打包合并成一个文件,并在网站发布之后进行压缩,从而减少HTTP请求次数,提高网络加载速度和页面 ...

  5. 开箱即用 - Grunt合并和压缩 js,css 文件

    js,css 文件合并与压缩 Grunt 是前端自动化构建工具,类似webpack. 它究竟有多强悍,请看它的 介绍. 这里只演示如何用它的皮毛功能:文件合并与压缩. 首先说下js,css 合并与压缩 ...

  6. 使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度

    使用PHP和GZip压缩网站JS/CSS文件加速网站访问速度 一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件.这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢.如何加 ...

  7. iOS之在webView中引入本地html,image,js,css文件的方法 - sky//////////////////////////////////////ZZZZZZZZZZZZZZZ

    iOS之在webView中引入本地html,image,js,css文件的方法   2014-12-08 20:00:16CSDN-sky_2016-点击数:10292     项目需求 最近开发的项 ...

  8. nginx设置反向代理后,页面上的js css文件无法加载

    问题现象: nginx配置反向代理后,网页可以正常访问,但是页面上的js css文件无法加载,页面样式乱了. (1)nginx配置如下: (2)域名访问:js css文件无法加载: (3)IP访问:j ...

  9. javascript异步延时载入及推断是否已载入js/css文件

    <html> <head> <script type="text/javascript"> /**======================= ...

随机推荐

  1. 多线程下C#如何保证线程安全?

    多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题.所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是 ...

  2. bootstrap源码分析之form、navbar

    一.表单(Form) 源码文件:_form.scssmixins/_form.scss 1.按层次结构分:form-group -> form-control/input-group/form- ...

  3. 前端js文件合并三种方式

    最近在思考前端js文件该如何合并,当然不包括不能合并文件,而是我们能合并的文件,想了想应该也只有三种方式. 三个方式如下: 1. 一个大文件,所有js合并成一个大文件,所有页面都引用它. 2. 各个页 ...

  4. 原生JS:Date对象详细参考

    Date对象:基于1970年1月1日(世界标准时间)起的毫秒数 本文参考MDN做的详细整理,方便大家参考MDN 构造函数: new Date(); 依据系统设置的当前时间来创建一个Date对象. ne ...

  5. 转使用chrome命令行:disable-web-security 实现浏览器跨域

    注意chrome 48 版本后此方法就不能用了 推荐一个新方式来实现本地跨域调试线上资源,搜索chrome插件 Allow-Control-Allow-Origin: *.https://chrome ...

  6. Win7重装系统遇到的问题以及MysQL的问题解决

    连续三天因为系统的错误,android方面的软件一直不能正确运行.而且每次开机的时候QQ 微信等聊天工具也出现损坏.虽然重新下载一个可以保证在电脑不管的情况下正常的运行.可是作为玩电脑时间不长的我来说 ...

  7. 操作系统开发系列—12.d.扩充内核 ●

    现在把esp.GDT等内容放进内核中,我们现在可以用C语言了,只要能用C,我们就避免用汇编. 下面看切换堆栈和GDT的关键代码: ; 导入函数 extern cstart ; 导入全局变量 exter ...

  8. 【代码笔记】iOS-离线地图

    一,效果图. 二,工程图. 三,代码. ViewController.h #import <UIKit/UIKit.h> #import <CoreLocation/CoreLoca ...

  9. android 数据存储Ⅰ

    本章讲述在Android开发中,简单的数据存储.涉及知识主要是SharedPreferences,及多页面切换ViewPager. 1.功能需求 做一个小应用.启动的时候有左右引导图.只有第一次启动时 ...

  10. android 界面设计基本知识Ⅲ

    本章继续讲述在android界面设计中相关的知识点.介绍内容包括BroadcastReceiver(广播),Service(服务),Widget(小部件),WebView(网页加载控件). 1.Bro ...