程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Subtext(10) --SharpZipLib and HttpCompress

Subtext(10) --SharpZipLib and HttpCompress

編輯:.NET實例教程

blowery.Web.HttpCompress 和 ICSharpCode.SharpZipLib 在Subtext中應用。

在上篇文章中,我推薦了High Performance Web Sites 的14條原則,昨天看到第4條--Gzip Components,聯系起 Subtext中用到的第三方組件

blowery.Web.HttpCompress 和 ICSharpCode.SharpZipLib。

Subtext中正是遵循這一原則,避免每次請求都要創建一個新的XML document ,對Rss feed進行了壓縮並緩存。

class BaseSyndicationHandler實現IHttpHandler接口功能

核心代碼分析:

 



protected virtual void ProcessFeed()
...{
    if(RedirectToFeedBurnerIfNecessary())
        return;
    //請求者是FeedBurner的話處理後直接跳出 

    if(IsLocalCacheOK())
    ...{
        Send304();

        return;
    } 

    // 本地緩存並未過期不處理,發送304狀態碼,跳出

    if(!IsHttpCacheOK())
    ...{
        Feed = BuildFeed();//創建feed,並賦予LastModifIEd等相應屬性
        if(Feed != null)
        ...{
            if(UseDeltaEncoding && Feed.ClIEntHasAllFeedItems)
            ...{
                Send304();
                return;
            }

          //Delta Encoding只發送小部分更改的請求,這樣可以減少發送內容 
            Cache(Feed);
        }
    } 

    WriteFeed();//采用Gzip壓縮格式
}

 

 

再說一下web.config的配置(由於Subtext進行了整合,所以還是說下通用的配置)

 

 

 



<configSections> 

<sectionGroup name="blowery.web"> 

<section name="httpCompress" type="blowery.Web.HttpCompress.SectionHandler, blowery.Web.HttpCompress"/> 

</sectionGroup> 

</configSections> 

  


<blowery.web> 

<httpCompress preferredAlgorithm="gzip" compressionLevel="high"> 

<excludedMimeTypes> 

<add type="image/jpeg"/> 

<add type="image/png"/> 

<add type="image/gif"/> 

</excludedMimeTypes> 

//圖片格式已經壓縮過了,沒必要再壓縮,若壓縮,降低性能

<excludedPaths> 

<add path="NoCompress.ASPx"/> 

</excludedPaths> 

//不想被壓縮的內容 

</httpCompress> 

</blowery.web> 

 

<httpModules> 

<add name="CompressionModule" type="blowery.Web.HttpCompress.HttpModule, blowery.web.HttpCompress"/> 

</httpModules> 

 

 

 

控件下載地址及說明文檔:

blowery.Web.HttpCompress :http://www.icsharpcode.Net/OpenSource/SharpZipLib/Download.ASPx

http://codedocs.rainbowbeta.com/blowery.Web.HttpCompress.Html

ICSharpCode.SharpZipLib:

http://blowery.org/code/HttpCompressionModule.Html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved