ASP.NET頁(yè)面進(jìn)行GZIP壓縮優(yōu)化的幾款壓縮模塊的使用簡(jiǎn)介及應(yīng)用測(cè)試!(附源碼)第1/2頁(yè)
更新時(shí)間:2008年01月16日 20:21:28 作者:
ASP.NET頁(yè)面進(jìn)行GZIP壓縮優(yōu)化的幾款壓縮模塊的使用簡(jiǎn)介及應(yīng)用測(cè)試!(附源碼)
在介紹之前,先簡(jiǎn)單說(shuō)一說(shuō)ASP.NET服務(wù)端GZIP壓縮模塊的作用及工作原理,很多人編寫(xiě)網(wǎng)頁(yè)的時(shí)候頁(yè)面因?yàn)槭褂昧舜罅康腏S特效又或者放置很多大型動(dòng)態(tài)廣告導(dǎo)致了頁(yè)面或腳本體積龐大,通常都會(huì)使用一些壓縮工具本地對(duì)頁(yè)面或腳本進(jìn)行一定的壓縮后再上傳到服務(wù)器,但這樣的壓縮工具一般壓縮率有限,優(yōu)化自然也不明顯,本文章介紹的壓縮模塊的作用就是對(duì)asp.net的頁(yè)面或腳本等資源進(jìn)行高強(qiáng)度GZIP壓縮(一般能壓縮到只有1/5的體積),而且壓縮的過(guò)程是發(fā)生在客戶端請(qǐng)求aspx頁(yè)面的時(shí)候由服務(wù)端進(jìn)行壓縮處理后再傳送給客戶端顯示,換言之項(xiàng)目使用這些壓縮模塊之后,所有的aspx頁(yè)面都不需要事先進(jìn)行壓縮處理,而是由壓縮模塊在頁(yè)面被客戶端第一次請(qǐng)求的時(shí)候自動(dòng)在服務(wù)端后臺(tái)進(jìn)行壓縮處理(壓縮處理的時(shí)間很快,幾乎可以忽略不計(jì),但壓縮后的頁(yè)面加載速度卻提升明顯)。下面就讓我介紹幾款實(shí)現(xiàn)這樣功能的壓縮模塊:
一、WebResourceCompression壓縮模塊
這個(gè)壓縮模塊是專(zhuān)門(mén)用來(lái)實(shí)時(shí)壓縮ASP.NET2.0頁(yè)面引用的所有*.axd資源,一般aspx頁(yè)面使用了如anthem.net的ajax框架或asp.net驗(yàn)證控件都會(huì)產(chǎn)生axd文件引用,這個(gè)文件實(shí)際就是一個(gè)js腳本,啟用這個(gè)壓縮模塊后,所有的axd資源都會(huì)被GZIP壓縮后再傳送給客戶端,此模塊特別適用于aspx頁(yè)面應(yīng)用了ajax框架或需引用體積龐大的axd資源文件的項(xiàng)目!
使用:解壓后將WebResourceCompression.dll放到網(wǎng)站項(xiàng)目的BIN目錄,并且在Web.config <httpModules> 配置節(jié)中加入以下語(yǔ)句:
<add name="WebResourceCompression" type="WebResourceCompression.WebResourceCompressionModule"/>
優(yōu)點(diǎn):使用簡(jiǎn)單
缺點(diǎn):僅支持ASP.NET2.0或以上版本,不能壓縮除axd外的其它資源!
二、PageCompression壓縮模塊
與之前的模塊不同,這個(gè)模塊是專(zhuān)門(mén)用來(lái)壓縮aspx頁(yè)面的,啟用這個(gè)壓縮模塊之后,aspx頁(yè)面將會(huì)被實(shí)時(shí)壓縮,一般100K的頁(yè)面能被壓縮到25K左右,此模塊適用于只需要對(duì)頁(yè)面進(jìn)行壓縮的項(xiàng)目!
使用:解壓后將Compression.PageCompressionModule.dll放到網(wǎng)站項(xiàng)目的BIN目錄,并且在Web.config <httpModules> 配置節(jié)中加入以下語(yǔ)句:
<add name="PageCompressionModule" type="Compression.PageCompressionModule,Compression.PageCompressionModule"/>
優(yōu)點(diǎn):使用簡(jiǎn)單
缺點(diǎn):僅支持ASP.NET2.0或以上版本,不能壓縮除aspx頁(yè)面外的其它資源,而且啟用壓縮后,頁(yè)面引用的axd資源會(huì)無(wú)效(BUG)!
三、HttpCompress6.0壓縮模塊
這是一個(gè)支持asp.net1.0/1.1/2.0(2.0以下版本不支持gzip壓縮,僅支持deflate壓縮),可以壓縮aspx頁(yè)面請(qǐng)求的所有類(lèi)型(MimeTypes)的資源,包括圖片、js腳本、axd、aspx頁(yè)面、css文件等,并且能在web.config詳細(xì)自定義要壓縮那種類(lèi)型的資源及不壓縮那種類(lèi)型的資源、也可定義要壓縮指定的頁(yè)面或不壓縮指定的頁(yè)面,另外還有壓縮比率設(shè)定(high|normal|low)等等強(qiáng)大的自定義功能,不過(guò)此控件的最嚴(yán)重問(wèn)題是在asp.net2.0下啟用壓縮會(huì)導(dǎo)致axd文件無(wú)效,這樣如果頁(yè)面應(yīng)用了ajax框架就會(huì)導(dǎo)致ajax功能失效。
使用:略(與下面推薦的CompressionModule壓縮模塊使用方法雷同)
優(yōu)點(diǎn):開(kāi)放源代碼,強(qiáng)大的自定義功能,支持asp.net1.0/1.1/2.0版本,能壓縮多種資源!
缺點(diǎn):使用復(fù)雜,asp.net2.0下啟用壓縮會(huì)導(dǎo)致axd文件無(wú)效!
四、CompressionModule壓縮模塊(強(qiáng)烈推薦)
本人推薦的一個(gè)模塊,同樣可以壓縮aspx頁(yè)面請(qǐng)求的所有資源及支持強(qiáng)大自定義功能的壓縮模塊,與HttpCompress6.0一樣能自定義要壓縮那種類(lèi)型的資源及不壓縮那種類(lèi)型的資源、也可定義要壓縮指定的頁(yè)面或不壓縮指定的頁(yè)面,并且還有開(kāi)啟Cache資源的功能及指定壓縮目錄的強(qiáng)大功能,另外也不會(huì)像HttpCompress6.0會(huì)出現(xiàn)axd文件無(wú)效的BUG,這樣此壓縮模塊就能完美支持各種ajax框架??!
使用:請(qǐng)看后面的CompressionModule壓縮模塊實(shí)際使用及性能測(cè)試!
優(yōu)點(diǎn):開(kāi)放源代碼,強(qiáng)大的自定義功能,能壓縮多種資源,能完美支持各種ajax框架!
缺點(diǎn):使用復(fù)雜,僅支持asp.net2.0或以上版本!
綜上所述,各種壓縮模塊都能達(dá)到優(yōu)化頁(yè)面的作用,但由于壓縮的過(guò)程是發(fā)生在服務(wù)器一端,所以啟用這些壓縮會(huì)消耗一點(diǎn)點(diǎn)服務(wù)器資源,不過(guò)一般來(lái)說(shuō)壓縮只發(fā)生在客戶端第一次訪問(wèn)頁(yè)面的時(shí)候,因?yàn)橹鬄g覽器本身cache了頁(yè)面及資源的關(guān)系,再次刷新訪問(wèn)的時(shí)候就不會(huì)再占用服務(wù)器資源進(jìn)行壓縮了,所以對(duì)于網(wǎng)站頁(yè)面體積龐大的開(kāi)發(fā)者來(lái)說(shuō),啟用壓縮功能絕對(duì)是物有所值的,畢竟頁(yè)面體積更小,加載就會(huì)更快!
附錄:CompressionModule壓縮模塊的使用說(shuō)明及性能測(cè)試!
一、使用
首先,將DC.Web.HttpCompress.dll放到網(wǎng)站項(xiàng)目的bin目錄,再按如下增加及修改項(xiàng)目的web.config
<configSections>
<sectionGroup name="DCWeb">
<section name="HttpCompress" type="DC.Web.HttpCompress.Configuration,
DC.Web.HttpCompress"/>
</sectionGroup>
</configSections>
<DCWeb>
<HttpCompress compressionType="GZip">
<!--設(shè)定是否啟用cachefiles功能,并指定cache目錄,如果刪掉這行配置的話就自動(dòng)默認(rèn)為false(不開(kāi)啟cache)-->
<CacheSettings cacheFiles="true" path="cache"/>
<!--設(shè)定jspath及csspath,如果刪除掉這行配置的話就會(huì)使用默認(rèn)值-->
<PathSettings jsPath="javascript" cssPath="css" />
<!--配置要壓縮何種類(lèi)型的資源,這里設(shè)定只壓縮html,即只有aspx頁(yè)面及*.axd資源會(huì)被壓縮,其它的資源(如圖片,CSS等)將不被壓縮!例:如果要壓縮gif,請(qǐng)?zhí)砑?lt;add mime="image/gif"/>,壓縮jpg則添加<add mime="image/jpeg"/>-->
<IncludedMimeTypes>
<add mime="text/html" />
</IncludedMimeTypes>
<!--配置不壓縮何種類(lèi)型資源請(qǐng)使用:
<ExcludedMimeTypes>
<add mime="text/html" />
</ExcludedMimeTypes>
注意:ExcludedMimeTypes及IncludedMimeTypes只需要配置一個(gè)就可以,如果像上面那樣配置ExcludeMimeTypes的話,則表明除html類(lèi)型的資源外,其它資源都會(huì)被壓縮-->
<ExcludedPaths>
<!--設(shè)定不啟用壓縮的頁(yè)面路徑,下面設(shè)定了nocompress目錄下的default.aspx頁(yè)面將不會(huì)啟用壓縮功能,但其它頁(yè)面則正常啟用壓縮-->
<add path="~/NoCompress/Default.aspx" />
</ExcludedPaths>
</HttpCompress>
</DCWeb>
<!-- The js.axd and css.axd must be enabled to allow javascript and css
compression -->
<httpHandlers>
<!--如果不需要使用到此功能的話可刪掉此配置節(jié)-->
<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"/>
<!--設(shè)定啟用壓縮模塊的參數(shù)-->
<add name="HttpCompressModule"
type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/>
</httpModules>
配置好后,壓縮模塊就可以正常工作了!
小提示:如果web.config配置了
<CacheSettings cacheFiles="true" path="cache"/>
那么項(xiàng)目下就必須存在cache這個(gè)目錄,否則的話會(huì)出錯(cuò),如果項(xiàng)目不想增加這個(gè)目錄,只需要將這個(gè)配置節(jié)刪掉即可!
二、實(shí)際應(yīng)用的性能測(cè)試
一、WebResourceCompression壓縮模塊
這個(gè)壓縮模塊是專(zhuān)門(mén)用來(lái)實(shí)時(shí)壓縮ASP.NET2.0頁(yè)面引用的所有*.axd資源,一般aspx頁(yè)面使用了如anthem.net的ajax框架或asp.net驗(yàn)證控件都會(huì)產(chǎn)生axd文件引用,這個(gè)文件實(shí)際就是一個(gè)js腳本,啟用這個(gè)壓縮模塊后,所有的axd資源都會(huì)被GZIP壓縮后再傳送給客戶端,此模塊特別適用于aspx頁(yè)面應(yīng)用了ajax框架或需引用體積龐大的axd資源文件的項(xiàng)目!
使用:解壓后將WebResourceCompression.dll放到網(wǎng)站項(xiàng)目的BIN目錄,并且在Web.config <httpModules> 配置節(jié)中加入以下語(yǔ)句:
復(fù)制代碼 代碼如下:
<add name="WebResourceCompression" type="WebResourceCompression.WebResourceCompressionModule"/>
優(yōu)點(diǎn):使用簡(jiǎn)單
缺點(diǎn):僅支持ASP.NET2.0或以上版本,不能壓縮除axd外的其它資源!
二、PageCompression壓縮模塊
與之前的模塊不同,這個(gè)模塊是專(zhuān)門(mén)用來(lái)壓縮aspx頁(yè)面的,啟用這個(gè)壓縮模塊之后,aspx頁(yè)面將會(huì)被實(shí)時(shí)壓縮,一般100K的頁(yè)面能被壓縮到25K左右,此模塊適用于只需要對(duì)頁(yè)面進(jìn)行壓縮的項(xiàng)目!
使用:解壓后將Compression.PageCompressionModule.dll放到網(wǎng)站項(xiàng)目的BIN目錄,并且在Web.config <httpModules> 配置節(jié)中加入以下語(yǔ)句:
復(fù)制代碼 代碼如下:
<add name="PageCompressionModule" type="Compression.PageCompressionModule,Compression.PageCompressionModule"/>
優(yōu)點(diǎn):使用簡(jiǎn)單
缺點(diǎn):僅支持ASP.NET2.0或以上版本,不能壓縮除aspx頁(yè)面外的其它資源,而且啟用壓縮后,頁(yè)面引用的axd資源會(huì)無(wú)效(BUG)!
三、HttpCompress6.0壓縮模塊
這是一個(gè)支持asp.net1.0/1.1/2.0(2.0以下版本不支持gzip壓縮,僅支持deflate壓縮),可以壓縮aspx頁(yè)面請(qǐng)求的所有類(lèi)型(MimeTypes)的資源,包括圖片、js腳本、axd、aspx頁(yè)面、css文件等,并且能在web.config詳細(xì)自定義要壓縮那種類(lèi)型的資源及不壓縮那種類(lèi)型的資源、也可定義要壓縮指定的頁(yè)面或不壓縮指定的頁(yè)面,另外還有壓縮比率設(shè)定(high|normal|low)等等強(qiáng)大的自定義功能,不過(guò)此控件的最嚴(yán)重問(wèn)題是在asp.net2.0下啟用壓縮會(huì)導(dǎo)致axd文件無(wú)效,這樣如果頁(yè)面應(yīng)用了ajax框架就會(huì)導(dǎo)致ajax功能失效。
使用:略(與下面推薦的CompressionModule壓縮模塊使用方法雷同)
優(yōu)點(diǎn):開(kāi)放源代碼,強(qiáng)大的自定義功能,支持asp.net1.0/1.1/2.0版本,能壓縮多種資源!
缺點(diǎn):使用復(fù)雜,asp.net2.0下啟用壓縮會(huì)導(dǎo)致axd文件無(wú)效!
四、CompressionModule壓縮模塊(強(qiáng)烈推薦)
本人推薦的一個(gè)模塊,同樣可以壓縮aspx頁(yè)面請(qǐng)求的所有資源及支持強(qiáng)大自定義功能的壓縮模塊,與HttpCompress6.0一樣能自定義要壓縮那種類(lèi)型的資源及不壓縮那種類(lèi)型的資源、也可定義要壓縮指定的頁(yè)面或不壓縮指定的頁(yè)面,并且還有開(kāi)啟Cache資源的功能及指定壓縮目錄的強(qiáng)大功能,另外也不會(huì)像HttpCompress6.0會(huì)出現(xiàn)axd文件無(wú)效的BUG,這樣此壓縮模塊就能完美支持各種ajax框架??!
使用:請(qǐng)看后面的CompressionModule壓縮模塊實(shí)際使用及性能測(cè)試!
優(yōu)點(diǎn):開(kāi)放源代碼,強(qiáng)大的自定義功能,能壓縮多種資源,能完美支持各種ajax框架!
缺點(diǎn):使用復(fù)雜,僅支持asp.net2.0或以上版本!
綜上所述,各種壓縮模塊都能達(dá)到優(yōu)化頁(yè)面的作用,但由于壓縮的過(guò)程是發(fā)生在服務(wù)器一端,所以啟用這些壓縮會(huì)消耗一點(diǎn)點(diǎn)服務(wù)器資源,不過(guò)一般來(lái)說(shuō)壓縮只發(fā)生在客戶端第一次訪問(wèn)頁(yè)面的時(shí)候,因?yàn)橹鬄g覽器本身cache了頁(yè)面及資源的關(guān)系,再次刷新訪問(wèn)的時(shí)候就不會(huì)再占用服務(wù)器資源進(jìn)行壓縮了,所以對(duì)于網(wǎng)站頁(yè)面體積龐大的開(kāi)發(fā)者來(lái)說(shuō),啟用壓縮功能絕對(duì)是物有所值的,畢竟頁(yè)面體積更小,加載就會(huì)更快!
附錄:CompressionModule壓縮模塊的使用說(shuō)明及性能測(cè)試!
一、使用
首先,將DC.Web.HttpCompress.dll放到網(wǎng)站項(xiàng)目的bin目錄,再按如下增加及修改項(xiàng)目的web.config
復(fù)制代碼 代碼如下:
<configSections>
<sectionGroup name="DCWeb">
<section name="HttpCompress" type="DC.Web.HttpCompress.Configuration,
DC.Web.HttpCompress"/>
</sectionGroup>
</configSections>
<DCWeb>
<HttpCompress compressionType="GZip">
<!--設(shè)定是否啟用cachefiles功能,并指定cache目錄,如果刪掉這行配置的話就自動(dòng)默認(rèn)為false(不開(kāi)啟cache)-->
<CacheSettings cacheFiles="true" path="cache"/>
<!--設(shè)定jspath及csspath,如果刪除掉這行配置的話就會(huì)使用默認(rèn)值-->
<PathSettings jsPath="javascript" cssPath="css" />
<!--配置要壓縮何種類(lèi)型的資源,這里設(shè)定只壓縮html,即只有aspx頁(yè)面及*.axd資源會(huì)被壓縮,其它的資源(如圖片,CSS等)將不被壓縮!例:如果要壓縮gif,請(qǐng)?zhí)砑?lt;add mime="image/gif"/>,壓縮jpg則添加<add mime="image/jpeg"/>-->
<IncludedMimeTypes>
<add mime="text/html" />
</IncludedMimeTypes>
<!--配置不壓縮何種類(lèi)型資源請(qǐng)使用:
<ExcludedMimeTypes>
<add mime="text/html" />
</ExcludedMimeTypes>
注意:ExcludedMimeTypes及IncludedMimeTypes只需要配置一個(gè)就可以,如果像上面那樣配置ExcludeMimeTypes的話,則表明除html類(lèi)型的資源外,其它資源都會(huì)被壓縮-->
<ExcludedPaths>
<!--設(shè)定不啟用壓縮的頁(yè)面路徑,下面設(shè)定了nocompress目錄下的default.aspx頁(yè)面將不會(huì)啟用壓縮功能,但其它頁(yè)面則正常啟用壓縮-->
<add path="~/NoCompress/Default.aspx" />
</ExcludedPaths>
</HttpCompress>
</DCWeb>
<!-- The js.axd and css.axd must be enabled to allow javascript and css
compression -->
<httpHandlers>
<!--如果不需要使用到此功能的話可刪掉此配置節(jié)-->
<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"/>
<!--設(shè)定啟用壓縮模塊的參數(shù)-->
<add name="HttpCompressModule"
type="DC.Web.HttpCompress.HttpModule,DC.Web.HttpCompress"/>
</httpModules>
配置好后,壓縮模塊就可以正常工作了!
小提示:如果web.config配置了
<CacheSettings cacheFiles="true" path="cache"/>
那么項(xiàng)目下就必須存在cache這個(gè)目錄,否則的話會(huì)出錯(cuò),如果項(xiàng)目不想增加這個(gè)目錄,只需要將這個(gè)配置節(jié)刪掉即可!
二、實(shí)際應(yīng)用的性能測(cè)試
您可能感興趣的文章:
- C#實(shí)現(xiàn)GZip壓縮和解壓縮入門(mén)實(shí)例
- c#調(diào)用winrar解壓縮文件代碼分享
- asp.net中調(diào)用winrar實(shí)現(xiàn)壓縮解壓縮的代碼
- 用ASP.Net實(shí)現(xiàn)文件的在線壓縮和解壓縮
- Asp.net在線備份、壓縮和修復(fù)Access數(shù)據(jù)庫(kù)示例代碼
- asp.net輸出重寫(xiě)壓縮頁(yè)面文件實(shí)例代碼
- asp.net 圖片超過(guò)指定大小后等比例壓縮圖片的方法
- 基于Asp.Net MVC4 Bundle捆綁壓縮技術(shù)的介紹
- asp.net SharpZipLib的壓縮與解壓?jiǎn)栴}
- C#使用iCSharpcode進(jìn)行文件壓縮實(shí)現(xiàn)方法
- asp.net C#實(shí)現(xiàn)解壓縮文件的方法
相關(guān)文章
asp.net core實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了asp.net core實(shí)現(xiàn)文件上傳功能,怎么做單文件和多文件上傳,感興趣的小伙伴們可以參考一下2016-06-06ASP.NET中的URL過(guò)濾實(shí)現(xiàn)代碼
最近做的一個(gè)Web項(xiàng)目需要對(duì)URL進(jìn)行過(guò)濾,在網(wǎng)上搜了一下,知道J2EE有個(gè)Filter的東西,而在.NET方面,其實(shí)也可以實(shí)現(xiàn)2013-01-01Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序
這篇文章主要介紹了Asp.net SignalR創(chuàng)建實(shí)時(shí)聊天應(yīng)用程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11asp.net+jquery ajax無(wú)刷新登錄的實(shí)現(xiàn)方法
asp.net+jquery ajax無(wú)刷新登錄的實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-06-06ASP.NET讓FileUpload控件支持瀏覽自動(dòng)上傳功能的解決方法
這篇文章主要介紹了ASP.NET讓FileUpload控件支持瀏覽自動(dòng)上傳功能的解決方法,很實(shí)用的技巧,需要的朋友可以參考下2014-07-07ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼
這篇文章介紹了ASP.NET實(shí)現(xiàn)TreeView的XML數(shù)據(jù)源綁定實(shí)例代碼,有需要的朋友可以參考一下2013-11-11