[前端优化]使用Combres合并对js、css文件的请求
在前端优化的各种金律铁规中“减少客户端对资源的请求”都会在其中出现刚好最近对网站做一些优化使用了一下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配置节下添加1sectionnamecombrestypeCombres.ConfigSectionSetting, Combres, Version2.0.0.0, Cultureneutral, PublicKeyToken49212d24adfbe4b4/在configuration配置节下添加Combres配置文件的路径此文件的作用我们下面再说。1combresdefinitionUrl~/App_Data/combres.xml/配置好了后应该像这样1configSections2sectionnamecombrestypeCombres.ConfigSectionSetting, Combres,3Version2.0.0.0, Cultureneutral, PublicKeyToken49212d24adfbe4b4/4/configSections5combresdefinitionUrl~/App_Data/combres.xml/还需要添加httpModules的节点1httpModules2addnameUrlRoutingModuletypeSystem.Web.Routing.UrlRoutingModule,3System.Web.Routing, Version3.5.0.0, Cultureneutral,4PublicKeyToken31BF3856AD364E35/5/httpModules注意需要在项目中添加对System.Web.Routing的引用。下面来配置Combres的配置文件按照上面的路径配置我们就在App_Data下添加combres.xml文件。添加如下格式的配置文件。1?xml version1.0 encodingutf-8?2combresxmlnsurn:combres3resourceSetsurl~/combres.axddefaultDuration304defaultVersionauto5defaultDebugEnabledauto6resourceSetnamesiteCsstypecss7resourcepath~/styles/site.css/8resourcepath~/styles/jquery-ui-1.7.2.custom.css/9/resourceSet10resourceSetnamesiteJstypejs11resourcepath~/scripts/jquery-1.3.2.js/12resourcepath~/scripts/jquery-ui-1.7.2.custom.min.js/13/resourceSet14/resourceSets15/combresdefaultDuration 默认缓存的时间单位为天数defaultVersion 合并后的资源版本在你修改了资源文件后需要对版本进行修改你可以指定auto或者手动设置一个版本号defaultDebugEnabled 调试的模式为true时那么资源文件不进行压缩开发时可以设置成true上线后设置成false具体添加压缩方法的配置节点用于选择哪种方法对资源文件进行压缩1cssMinifiers2minifiernameyuitypeCombres.Minifiers.YuiCssMinifier, Combres3paramnameCssCompressionTypetypestringvalueStockYuiCompressor/4paramnameColumnWidthtypeintvalue-1/5/minifier6/cssMinifiers7jsMinifiers8minifiernamemsajaxtypeCombres.Minifiers.MSAjaxJSMinifier, Combres9binderTypeCombres.Binders.SimpleObjectBinder, Combres10paramnameCollapseToLiteraltypeboolvaluetrue/11paramnameEvalsAreSafetypeboolvaluetrue/12paramnameMacSafariQuirkstypeboolvaluetrue/13paramnameCatchAsLocaltypeboolvaluetrue/14paramnameLocalRenamingtypestringvalueCrunchAll/15paramnameOutputModetypestringvalueSingleLine/16paramnameRemoveUnneededCodetypeboolvaluetrue/17paramnameStripDebugStatementstypeboolvaluetrue/18/minifier19/jsMinifiers要使用哪种压缩方法在resourceSet或者在resource上添加相应的属性即可配置后像下面这样1?xml version1.0 encodingutf-8?2combresxmlnsurn:combres3cssMinifiers4minifiernameyuitypeCombres.Minifiers.YuiCssMinifier, Combres5paramnameCssCompressionTypetypestringvalueStockYuiCompressor/6paramnameColumnWidthtypeintvalue-1/7/minifier8/cssMinifiers9jsMinifiers10minifiernamemsajaxtypeCombres.Minifiers.MSAjaxJSMinifier, Combres11binderTypeCombres.Binders.SimpleObjectBinder, Combres12paramnameCollapseToLiteraltypeboolvaluetrue/13paramnameEvalsAreSafetypeboolvaluetrue/14paramnameMacSafariQuirkstypeboolvaluetrue/15paramnameCatchAsLocaltypeboolvaluetrue/16paramnameLocalRenamingtypestringvalueCrunchAll/17paramnameOutputModetypestringvalueSingleLine/18paramnameRemoveUnneededCodetypeboolvaluetrue/19paramnameStripDebugStatementstypeboolvaluetrue/20/minifier21/jsMinifiers22resourceSetsurl~/combres.axddefaultDuration3023defaultVersionauto24defaultDebugEnabledauto25resourceSetnamesiteCsstypecssminifierRefyui26resourcepath~/styles/site.css/27resourcepath~/styles/jquery-ui-1.7.2.custom.css/28/resourceSet29resourceSetnamesiteJstypejs30resourcepath~/scripts/jquery-1.3.2.jsminifierRefmsajax/31resourcepath~/scripts/jquery-ui-1.7.2.custom.min.jsminifierRefoff/32/resourceSet33/resourceSets34/combres最后还需要在Global.ascx的Application_Start中添加加载的方法即可1protectedvoidApplication_Start(objectsender, EventArgs e)2{3RouteTable.Routes.AddCombresRoute(Combres Route);4}记得在Global.ascx的头部要引入命名空间1% Import NamespaceSystem.Web.Routing%2% Import NamespaceCombres%页面使用1% Import NamespaceCombres%2headrunatserver3titleUsing Combres/title4%WebExtensions.CombresLink(siteCss)%5%WebExtensions.CombresLink(siteJs)%6/head页面使用效果当页面中引用了很多个js、css文件时将都被合并成两个请求以达到减少HTTP请求的目的。

相关新闻

UE5.5 VR项目UI开发:从交互原理到性能优化的实战指南

UE5.5 VR项目UI开发:从交互原理到性能优化的实战指南

1. 项目概述与核心痛点 最近在UE5.5引擎下折腾一个VR项目,其中一个看似基础但实际暗藏玄机的任务就是修改UI面板。本以为从传统的2D UI设计切换到VR环境,无非是换个地方“贴图”,但真正上手才发现,从交互逻辑、空间定位到性能优化…

2026/10/17 12:56:02 阅读更多 →
Web漏洞扫描工具:核心价值与主流方案解析

Web漏洞扫描工具:核心价值与主流方案解析

1. Web漏洞扫描工具的必要性与核心价值在数字化浪潮席卷各行各业的今天,Web应用已成为企业对外服务的核心窗口。去年某电商平台因未修复的SQL注入漏洞导致百万用户数据泄露的事件,再次印证了安全防护的极端重要性。作为安全防御的第一道防线,…

2026/10/17 10:28:42 阅读更多 →
ASP.NET Web Forms 4.5的新特性(二):针对HTML5的更新和Unobtrusive Validation

ASP.NET Web Forms 4.5的新特性(二):针对HTML5的更新和Unobtrusive Validation

在前一篇文章中我们介绍了两个新特性:强类型数据控件和Bundling。 这次我们再介绍两个新特性:ASP.NET Web Forms 4.5中针对HTML5的更新和Unobtrusive Validation。 针对HTML5的更新 在ASP.NET Web Forms 4.5中,控件TextBox的TextBoxMode从之前…

2026/10/15 0:44:36 阅读更多 →

最新新闻

用蒙特卡洛模拟网约车司机生存账本:叙事新闻游戏开发实战

用蒙特卡洛模拟网约车司机生存账本:叙事新闻游戏开发实战

简介:这是一款由英国《金融时报》制作的叙事性新闻游戏,围绕优步司机的经济处境与真实生活展开,玩家需在一周内尝试赚取1000美元,并在接受采访的真实司机面前做出抉择。资源面向对零工经济、交互叙事与新闻游戏开发感兴趣的读者&a…

2026/10/17 18:36:00 阅读更多 →
内网流媒体密码安全:从最低标准到实践配置

内网流媒体密码安全:从最低标准到实践配置

很多人觉得内网里的流媒体服务,密码随便设一个六位数字就够了,反正外面的人又看不到。这话说得太轻巧了。我在实际排查里见过不少内网媒体服务器被“外人”打开过的案例,原因大多不是什么高深黑客技术,而是密码太短、太常见&#…

2026/10/17 18:36:00 阅读更多 →
Java实现MySQL到Excel高效导出与导入:POI与EasyExcel实战

Java实现MySQL到Excel高效导出与导入:POI与EasyExcel实战

1. 为什么“数据库到Excel”这个需求值得认真对待但凡做过企业级应用的人,几乎都绕不开一个场景:业务方跑过来说,“能不能把系统里的数据导出来给我,我要在Excel里做分析”。或者反过来,“我这边整理了一份Excel&#…

2026/10/17 18:36:00 阅读更多 →
把AI课件当工程项目:从信息架构到交付验证的完整路径

把AI课件当工程项目:从信息架构到交付验证的完整路径

简介:这份PPT课件围绕人工智能的现状与未来展开,面向高校学生、职场入门者及需要系统梳理AI知识框架的读者,帮助其在较短时间内建立从概念到产业应用的完整认知。内容涵盖人工智能的定义与弱、通用、强三种类型,机器人、语言识别、…

2026/10/17 18:36:00 阅读更多 →
脑机接口白皮书:医疗健康落地与脑电信号应用解析

脑机接口白皮书:医疗健康落地与脑电信号应用解析

简介:本资源为AIIA于2021年7月发布的《脑机接口技术在医疗健康领域应用白皮书》,面向医疗AI产品经理、脑科学研究者、医疗器械从业者及政策分析人员,系统梳理脑机接口(BCI)的技术原理、发展脉络与医疗应用场景。白皮书…

2026/10/17 18:36:00 阅读更多 →
QML自制数字软键盘:向TextInput/TextField键入数字并实现左移右移删除

QML自制数字软键盘:向TextInput/TextField键入数字并实现左移右移删除

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 18:34:59 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →