Click here to Skip to main content
Click here to Skip to main content

Compress your ASP.NET 2.0 pages

By , 1 Feb 2006
 

A screenshot of the trace

Introduction

To be on the web with a website that is half successful, you can feel in your wallet pretty quickly. The bandwidth is often a cost factor in the price of a website. Limiting that bandwidth is possible through a few compression standards. I was looking for a way on how to compress my ASP.NET pages when I found the module of Ben Lowery which can be found here. But his implementation never worked properly, not in .NET 1.1 and not in .NET 2.0, at least not in my case.

I downloaded his code and had a read through it, and it was completely .NET 1.1 style and still written like it was using the #ziplib. So, I rewrote his version to something that does work properly and also detects the path properly. In my case, whenever I tried to use his library, the output of my pages was empty.

Using the code

To use the code is pretty easy. Once you've compiled the HttpCompress module, you can add a reference to any .NET 2.0 site. Next, you should set a few parameters in the web.config and you're good to go. If you want to see whether the content is really filtered, you will need something that logs the HTTP pipeline. I use Nikhil Kothari's WebDevHelper BHO to do it. An alternative would be to use Fiddler.

The first thing you can configure are paths and mime-types that are to be excluded from being compressed by the module. I, for one, do not compress any images nor do I compress streaming video etc. because these formats have already been compressed pretty good and you won't be gaining anything significant by compressing them. You are more likely to use more server resources for a small gain.

<configuration>
  <configSections>
    <sectionGroup name="Flanders">
      <section name="HttpCompress" 
        type="Flanders.Library.Modules.HttpCompress.
                 Configuration, HttpCompress"/>
    </sectionGroup>
  </configSections>
  <Flanders>
    <HttpCompress compressionType="GZip">
      <ExcludedPaths>
        <add path="NoCompression.aspx"/>
      </ExcludedPaths>
      <ExcludedMimeTypes>
        <add mime="image/jpeg"/>
      </ExcludedMimeTypes>
    </HttpCompress>
  </Flanders>
  <system.web>
    <httpModules>
      <add name="HttpCompressModule" 
        type="Flanders.Library.Modules.HttpCompress.
                HttpModule,HttpCompress"/>
    </httpModules>
  </system.web>
</configuration>

In the module, you need to hook up an event to the PostReleaseRequeststate. Before, I used to hook it up to the BeginRequest event but this executes way too early for the module to execute. At PostReleaseRequestState, the whole page has executed and its response content has been generated.

   41         public void Init(HttpApplication context)
   42         {
   43             context.PostReleaseRequestState+=
                       new EventHandler(context_PostReleaseRequestState);
   44         }

History

  • 07/01/2006: v.1.0 - Added content to CodeProject and wrote this article.
  • 23/01/2006: v.1.1 - Refactored the module because of problems with JavaScript handling and many more ;-).

License

This article, along with any associated source code and files, is licensed under The MIT License

About the Author

Casual Jim
Software Developer (Senior)
Belgium Belgium
Member
No Biography provided

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
General'context_PostReleaseRequestState' does not exist in the current contextmemberrichard.tchicou5 Jan '09 - 0:56 
GeneralNot happymembersmilysanjai6 Oct '08 - 20:51 
GeneralRe: Not happymemberCasual Jim6 Oct '08 - 22:11 
GeneralRe: Not happymembersmilysanjai6 Oct '08 - 22:57 
GeneralRe: Not happymemberCasual Jim6 Oct '08 - 23:22 
GeneralRe: Not happymembersmilysanjai7 Oct '08 - 0:17 
GeneralRe: Not happymemberCasual Jim7 Oct '08 - 0:26 
GeneralRe: Not happymemberCasual Jim6 Oct '08 - 22:12 
GeneralRe: Not happymembersmilysanjai7 Oct '08 - 1:56 
I Included that one also.
 
I am getting the below error:
 
Could not load type 'Flanders.Library.Modules.HttpCompress.
HttpModule' from assembly 'HttpCompress'.
GeneralRe: Not happymemberCasual Jim7 Oct '08 - 2:05 
GeneralRe: Not happymembersmilysanjai7 Oct '08 - 2:13 
GeneralRe: Not happymemberCasual Jim7 Oct '08 - 2:47 
GeneralRe: Not happymemberCasual Jim7 Oct '08 - 2:48 
GeneralRe: Not happymembersmilysanjai7 Oct '08 - 22:34 
GeneralRe: Not happymemberCasual Jim7 Oct '08 - 23:10 
GeneralRe: Not happymembersmilysanjai20 Oct '08 - 23:40 
GeneralRe: Not happymemberCasual Jim20 Oct '08 - 23:43 
GeneralRe: Not happymembersmilysanjai21 Oct '08 - 3:06 
GeneralRe: Not happymembermercede14 Oct '11 - 6:15 
GeneralRe: Not happymemberSmart_Boy26 Jan '12 - 3:28 
GeneralAjax Problemmemberreturnofjedi23 Aug '07 - 2:10 
GeneralWebResource.axdmemberecellcell30 Nov '06 - 8:58 
GeneralResponse.WriteSubstitution Does not workmemberGFunny197210 Nov '06 - 7:39 
GeneralRe: Response.WriteSubstitution Does not workmemberCasual Jim10 Nov '06 - 8:20 
GeneralRe: Response.WriteSubstitution Does not workmemberGFunny197213 Nov '06 - 4:07 
Generalhttpcompress and focus() Eventmembergablersoftware10 May '06 - 2:18 
GeneralRe: httpcompress and focus() EventmemberCasual Jim10 May '06 - 10:30 
GeneralRe: httpcompress and focus() Eventmembergablersoftware11 May '06 - 21:05 
GeneralCompression While Posting Back...memberalidehghan6 Feb '06 - 21:00 
GeneralRe: Compression While Posting Back...memberCasual Jim7 Feb '06 - 8:13 
GeneralCSS & JS Includesmemberjoeyb10003 Feb '06 - 3:30 
GeneralRe: CSS & JS IncludesmemberCasual Jim7 Feb '06 - 8:04 
QuestionHow I check up that "output stream of an ASP.NET page" is done?memberDolonk24 Jan '06 - 21:17 
AnswerRe: How I check up that "output stream of an ASP.NET page" is done?memberCasual Jim24 Jan '06 - 22:26 
QuestionMedium trust?memberaerodave22 Jan '06 - 19:33 
GeneralJavascript nastiesmembervaticnz11 Jan '06 - 9:15 
GeneralRe: Javascript nastiesmemberCasual Jim22 Jan '06 - 16:05 
GeneralRe: Javascript nastiesmemberahoja7 Feb '06 - 22:48 
QuestionWhat kind of files should be excluded?memberMorningZ10 Jan '06 - 6:04 
AnswerRe: What kind of files should be excluded?memberCasual Jim10 Jan '06 - 8:49 
GeneralFailing in IE6memberaerodave9 Jan '06 - 12:34 
GeneralRe: Failing in IE6memberCasual Jim10 Jan '06 - 9:03 
GeneralRe: Failing in IE6memberCasual Jim22 Jan '06 - 16:08 
GeneralRe: Failing in IE6memberaerodave22 Jan '06 - 19:31 
GeneralRe: Failing in IE6memberNeetflash23 May '06 - 16:08 
GeneralIIS CompressionmemberJon Sagara6 Jan '06 - 13:46 
GeneralRe: IIS CompressionmemberCasual Jim6 Jan '06 - 13:58 
GeneralRe: IIS CompressionmemberJoshua Lunsford8 Jan '06 - 11:39 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130516.1 | Last Updated 1 Feb 2006
Article Copyright 2006 by Casual Jim
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid