在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工具本地对页面或脚本进行一定的压缩后再上传到服务器,但这样的压缩工具一般压缩率有限,优化自然也不明显,本文章介绍的压缩模块的作用就是对asp.net的页面或脚本等资源进行高强度GZIP压缩(一般能压缩到只有1/5的体积),而且压缩的过程是发生在客户端请求aspx页面的时候由服务端进行压缩处理后再传送给客户端显示,换言之项目使用这些压缩模块之后,所有的aspx页面都不需要事先进行压缩处理,而是由压缩模块在页面被客户端第一次请求的时候自动在服务端后台进行压缩处理(压缩处理的时间很快,几乎可以忽略不计,但压缩后的页面加载速度却提升明显)。下面就让我介绍几款实现这样功能的压缩模块: 

一、WebResourceCompression压缩模块 这个压缩模块是专门用来实时压缩ASP.NET2.0页面引用的所有*.axd资源,一般aspx页面使用了如anthem.net的ajax框架或asp.net验证控件都会产生axd文件引用,这个文件实际就是一个js脚本,启用这个压缩模块后,所有的axd资源都会被GZIP压缩后再传送给客户端,此模块特别适用于aspx页面应用了ajax框架或需引用体积庞大的axd资源文件的项目! 

使用:解压后将WebResourceCompression.dll放到网站项目的BIN目录,并且在Web.config <httpModules> 配置节中加入以下语句: 复制代码 代码如下:<add name="WebResourceCompression" type="WebResourceCompression.WebResourceCompressionModule"/> 

优点:使用简单 缺点:仅支持ASP.NET2.0或以上版本,不能压缩除axd外的其它资源! 

二、PageCompression压缩模块 与之前的模块不同,这个模块是专门用来压缩aspx页面的,启用这个压缩模块之后,aspx页面将会被实时压缩,一般100K的页面能被压缩到25K左右,此模块适用于只需要对页面进行压缩的项目! 

使用:解压后将Compression.PageCompressionModule.dll放到网站项目的BIN目录,并且在Web.config <httpModules> 配置节中加入以下语句: 复制代码 代码如下:<add name="PageCompressionModule" type="Compression.PageCompressionModule,Compression.PageCompressionModule"/> 

优点:使用简单 缺点:仅支持ASP.NET2.0或以上版本,不能压缩除aspx页面外的其它资源,而且启用压缩后,页面引用的axd资源会无效(BUG)! 

三、HttpCompress6.0压缩模块 这是一个支持asp.net1.0/1.1/2.0(2.0以下版本不支持gzip压缩,仅支持deflate压缩),可以压缩aspx页面请求的所有类型(MimeTypes)的资源,包括图片、js脚本、axd、aspx页面、css文件等,并且能在web.config详细自定义要压缩那种类型的资源及不压缩那种类型的资源、也可定义要压缩指定的页面或不压缩指定的页面,另外还有压缩比率设定(high|normal|low)等等强大的自定义功能,不过此控件的最严重问题是在asp.net2.0下启用压缩会导致axd文件无效,这样如果页面应用了ajax框架就会导致ajax功能失效。 

使用:略(与下面推荐的CompressionModule压缩模块使用方法雷同) 优点:开放源代码,强大的自定义功能,支持asp.net1.0/1.1/2.0版本,能压缩多种资源! 缺点:使用复杂,asp.net2.0下启用压缩会导致axd文件无效! 

四、CompressionModule压缩模块(强烈推荐) 本人推荐的一个模块,同样可以压缩aspx页面请求的所有资源及支持强大自定义功能的压缩模块,与HttpCompress6.0一样能自定义要压缩那种类型的资源及不压缩那种类型的资源、也可定义要压缩指定的页面或不压缩指定的页面,并且还有开启Cache资源的功能及指定压缩目录的强大功能,另外也不会像HttpCompress6.0会出现axd文件无效的BUG,这样此压缩模块就能完美支持各种ajax框架!! 

使用:请看后面的CompressionModule压缩模块实际使用及性能测试! 优点:开放源代码,强大的自定义功能,能压缩多种资源,能完美支持各种ajax框架! 缺点:使用复杂,仅支持asp.net2.0或以上版本! 

综上所述,各种压缩模块都能达到优化页面的作用,但由于压缩的过程是发生在服务器一端,所以启用这些压缩会消耗一点点服务器资源,不过一般来说压缩只发生在客户端第一次访问页面的时候,因为之后浏览器本身cache了页面及资源的关系,再次刷新访问的时候就不会再占用服务器资源进行压缩了,所以对于网站页面体积庞大的开发者来说,启用压缩功能绝对是物有所值的,毕竟页面体积更小,加载就会更快! 

附录:CompressionModule压缩模块的使用说明及性能测试! 一、使用 首先,将DC.Web.HttpCompress.dll放到网站项目的bin目录,再按如下增加及修改项目的web.config 

复制代码 代码如下:<configSections> <sectionGroup name="DCWeb"> <section name="HttpCompress" type="DC.Web.HttpCompress.Configuration, DC.Web.HttpCompress"/> </sectionGroup> </configSections> 

<DCWeb> <HttpCompress compressionType="GZip"> <!--设定是否启用cachefiles功能,并指定cache目录,如果删掉这行配置的话就自动默认为false(不开启cache)--> <CacheSettings cacheFiles="true" path="cache"/> <!--设定jspath及csspath,如果删除掉这行配置的话就会使用默认值--> <PathSettings jsPath="javascript" cssPath="css" /> <!--配置要压缩何种类型的资源,这里设定只压缩html,即只有aspx页面及*.axd资源会被压缩,其它的资源(如图片,CSS等)将不被压缩!例:如果要压缩gif,请添加<add mime="image/gif"/>,压缩jpg则添加<add mime="image/jpeg"/>--> <IncludedMimeTypes> <add mime="text/html" /> </IncludedMimeTypes> <!--配置不压缩何种类型资源请使用: <ExcludedMimeTypes> <add mime="text/html" /> </ExcludedMimeTypes> 注意:ExcludedMimeTypes及IncludedMimeTypes只需要配置一个就可以,如果像上面那样配置ExcludeMimeTypes的话,则表明除html类型的资源外,其它资源都会被压缩--> <ExcludedPaths> <!--设定不启用压缩的页面路径,下面设定了nocompress目录下的default.aspx页面将不会启用压缩功能,但其它页面则正常启用压缩--> <add path="~/NoCompress/Default.aspx" /> </ExcludedPaths> </HttpCompress> </DCWeb> 

<!-- The js.axd and css.axd must be enabled to allow javascript and css compression --> <httpHandlers> <!--如果不需要使用到此功能的话可删掉此配置节--> <add verb="*" path="js.axd,css.axd" type="DC.Web.HttpCompress.CompressionHandler,DC.Web.HttpCompress"/> </httpHandlers> <!-- The compression module must be enabled for the WebResource.axd to be compressed --> <httpModules> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> <!--设定启用压缩模块的参数--> <add name="HttpCompressModule" type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/> </httpModules> 

配置好后,压缩模块就可以正常工作了! 

小提示:如果web.config配置了 <CacheSettings cacheFiles="true" path="cache"/> 那么项目下就必须存在cache这个目录,否则的话会出错,如果项目不想增加这个目录,只需要将这个配置节删掉即可! 

二、实际应用的性能测试 

跟踪软件:fiddler2 本次测试使用本人开发的DotNetTextBox在线编辑器控件作为页面载体,共有两个一模一样的页面分别为compress.aspx(启用压缩)及nocompress.aspx(不启用压缩) 

首先打开不启用压缩的nocompress.aspx并且查看页面体积如下图: 

同时查看fiddler2看看实际接收的流量 

通过上图可以看到,实际接收与查看属性的体积都是一样65452字节,并且fiddler2检测到页面是no compression 

跟着我们打开启用压缩的compress.aspx并查看页面体积如下图(与nocompress.aspx页面体积基本一样,只有2字节的误差): 

再看看fiddler2实际接收到的流量 

压缩的效果终于看到了,fiddler2检测到实际接收到的流量只有17277字节,并且右下角显示页面采用的是GZIP Encoding,压缩后的页面体积只有原来的1/4!!! 1)前面进行的CompressionModule使用及性能测试实例的下载地址: CompressSample.rar 

2)CompressionModule压缩模块在Asp.Net Ajax中应用的实例下载: ajaxsample.rar 

3)CompressionModule压缩模块的完整源码下载地址: CompressionModule.rar 

Gzip压缩无效的终极解决方案!IIS开启GZIP压缩效率对比及部署方法小结win2008 IIS7中启用JS的gzip压缩的方法在IIS上启用Gzip压缩详细方法(HTTP压缩)IIS启用页面Gzip压缩实现说明PHP zlib扩展实现页面GZIP压缩输出windows服务器上的iis Gzip压缩功能启用在IIS上启用Gzip压缩 (HTTP压缩)PHP中HTTP方式下的Gzip压缩传输方法举偶PHP+.htaccess实现全站静态HTML文件GZIP压缩传输(一)Gzip压缩启用图文方法详细说明【IIS6.0、Apache】详细出处参考:http://www.jb51.net/article/13426_2.htm

ASP.NET页面进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)相关推荐

  1. 针对ASP.NET页面实时进行GZIP压缩优化的几款压缩模块的使用简介及应用测试!(附源码)...

    在介绍之前,先简单说一说ASP.NET服务端GZIP压缩模块的作用及工作原理,很多人编写网页的时候页面因为使用了大量的JS特效又或者放置很多大型动态广告导致了页面或脚本体积庞大,通常都会使用一些压缩工 ...

  2. 智能优化算法之鸟群算法(BSA)的实现(Python附源码)

    文章目录 一.鸟群算法的实现思路 1.飞行行为 2.生产者行为 3.乞讨者行为 4.觅食行为 5.保持警戒行为 二.算法步骤 三.实例 一.鸟群算法的实现思路 鸟群算法(Bird Swarm Alog ...

  3. 智能优化算法之萤火虫算法(FA)的实现(Python附源码)

    一.萤火虫算法的实现思路 萤火虫算法(Firefly Algorithm,FA)是由Yang于2010年提出的一种群智能优化算法,在自然界中,萤火虫之间通过自身发光来吸引异性前来交配以及吸引猎物进行捕 ...

  4. VC++使用zlib压缩及解压数据,使用base64编码及解码数据(附源码)

    VC++常用功能开发汇总(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/124272585C++软件异常排查从 ...

  5. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码]...

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(32)-swfupload多文件上传[附源码] 文件上传这东西说到底有时候很痛,原来的asp.net服务器 ...

  6. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码]

    构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(10)-系统菜单栏[附源码] 原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后 ...

  7. Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)

    目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...

  8. Entity Framework在Asp.net MVC中的实现One Context Per Request(附源码)

    上篇中"Entity Framework中的Identity map和Unit of Work模式", 由于EF中的Identity map和Unit of Work模式,EF体现 ...

  9. 【优化求解】基于matlab禁忌搜索算法求解函数极值问题【含Matlab源码 1204期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源: [优化求解]基于matlab禁忌搜索算法求解函数极值问题[含Matlab源码 1204期] 点击上面蓝色字体,直接付费下载,即可. 获取 ...

最新文章

  1. bootstrap datepicker Uncaught TypeError: Cannot call method 'split' of undefined问题
  2. 黄聪:Microsoft Enterprise Library 5.0 系列教程(二) Cryptography Application Block (高级)
  3. D-Link云摄像头超过120款产品存在漏洞,约40万台设备受影响
  4. git fetch比较差异
  5. 不同系统下的shell的不同_不同论文检测系统有哪些区别?
  6. Java 读书笔记 (十一) Number Math 类
  7. ideajdk升级_JDK升级为13
  8. DXOMark公布最新相机综合评分:华为P30 Pro不再是唯一王者
  9. 使用Python搭建人脸识别考勤系统
  10. 刷排名优优软件_QQ群排名技术原理
  11. Flixel横板游戏制作教程(四)— RandomLevels
  12. 动态本体 palantir
  13. 学习Python前序----计算机要点
  14. Vue如何将baes64格式的图片转成普通格式
  15. Kiva(亚马逊)机器人介绍
  16. Bluetooth技术学习笔记 ——HFP控制功能之连接管理
  17. Robert Marino:欧洲创新的代表性不足,量子计算或能破局
  18. 插件启动so库加载原理及实现
  19. 2018ICPC北京赛总结
  20. 【致客户书】关于CSDN专栏订阅的说明

热门文章

  1. canvas三角函数模拟水波效果
  2. echart折线图,柱状图,饼图设置颜色
  3. SaltStack实战之数据系统-Grains
  4. Yii-mongo操作
  5. Android WindowManager 解析与骗取 QQ 密码案例分析
  6. 用原生 js jquery 实现知乎收起答案功能
  7. GridView使用常见的注意点
  8. 实现网页中按钮刷新的N种方法
  9. 暴涨!BTC忠实粉丝转向BCH为BCH网络添砖加瓦
  10. 小程序的生命周期函数?