Click here to Skip to main content
11,644,982 members (70,325 online)
Click here to Skip to main content

Compress your ASP.NET 2.0 pages

, 1 Feb 2006 MIT 130.9K 1.4K 71
Rate this:
Please Sign up or sign in to vote.
An article on how to zip the output stream of an ASP.NET page.

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 Wink | ;-) .

License

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

Share

About the Author

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

You may also be interested in...

Comments and Discussions

 
General'context_PostReleaseRequestState' does not exist in the current context Pin
richard.tchicou5-Jan-09 0:56
memberrichard.tchicou5-Jan-09 0:56 
GeneralNot happy Pin
smilysanjai6-Oct-08 20:51
membersmilysanjai6-Oct-08 20:51 
GeneralRe: Not happy Pin
Casual Jim6-Oct-08 22:11
memberCasual Jim6-Oct-08 22:11 
GeneralRe: Not happy Pin
smilysanjai6-Oct-08 22:57
membersmilysanjai6-Oct-08 22:57 
GeneralRe: Not happy Pin
Casual Jim6-Oct-08 23:22
memberCasual Jim6-Oct-08 23:22 
GeneralRe: Not happy Pin
smilysanjai7-Oct-08 0:17
membersmilysanjai7-Oct-08 0:17 
GeneralRe: Not happy Pin
Casual Jim7-Oct-08 0:26
memberCasual Jim7-Oct-08 0:26 
GeneralRe: Not happy Pin
Casual Jim6-Oct-08 22:12
memberCasual Jim6-Oct-08 22:12 
GeneralRe: Not happy Pin
smilysanjai7-Oct-08 1:56
membersmilysanjai7-Oct-08 1:56 
GeneralRe: Not happy Pin
Casual Jim7-Oct-08 2:05
memberCasual Jim7-Oct-08 2:05 
GeneralRe: Not happy Pin
smilysanjai7-Oct-08 2:13
membersmilysanjai7-Oct-08 2:13 
GeneralRe: Not happy Pin
Casual Jim7-Oct-08 2:47
memberCasual Jim7-Oct-08 2:47 
GeneralRe: Not happy Pin
Casual Jim7-Oct-08 2:48
memberCasual Jim7-Oct-08 2:48 
GeneralRe: Not happy Pin
smilysanjai7-Oct-08 22:34
membersmilysanjai7-Oct-08 22:34 
GeneralRe: Not happy Pin
Casual Jim7-Oct-08 23:10
memberCasual Jim7-Oct-08 23:10 
GeneralRe: Not happy Pin
smilysanjai20-Oct-08 23:40
membersmilysanjai20-Oct-08 23:40 
GeneralRe: Not happy Pin
Casual Jim20-Oct-08 23:43
memberCasual Jim20-Oct-08 23:43 
GeneralRe: Not happy Pin
smilysanjai21-Oct-08 3:06
membersmilysanjai21-Oct-08 3:06 
GeneralRe: Not happy Pin
mercede14-Oct-11 6:15
membermercede14-Oct-11 6:15 
GeneralRe: Not happy Pin
Smart_Boy26-Jan-12 3:28
memberSmart_Boy26-Jan-12 3:28 
GeneralAjax Problem Pin
returnofjedi23-Aug-07 2:10
memberreturnofjedi23-Aug-07 2:10 
GeneralWebResource.axd Pin
ecellcell30-Nov-06 8:58
memberecellcell30-Nov-06 8:58 
GeneralResponse.WriteSubstitution Does not work Pin
GFunny197210-Nov-06 7:39
memberGFunny197210-Nov-06 7:39 
GeneralRe: Response.WriteSubstitution Does not work Pin
Casual Jim10-Nov-06 8:20
memberCasual Jim10-Nov-06 8:20 
GeneralRe: Response.WriteSubstitution Does not work Pin
GFunny197213-Nov-06 4:07
memberGFunny197213-Nov-06 4:07 
Generalhttpcompress and focus() Event Pin
gablersoftware10-May-06 2:18
membergablersoftware10-May-06 2:18 
GeneralRe: httpcompress and focus() Event Pin
Casual Jim10-May-06 10:30
memberCasual Jim10-May-06 10:30 
GeneralRe: httpcompress and focus() Event Pin
gablersoftware11-May-06 21:05
membergablersoftware11-May-06 21:05 
GeneralCompression While Posting Back... Pin
alidehghan6-Feb-06 21:00
memberalidehghan6-Feb-06 21:00 
GeneralRe: Compression While Posting Back... Pin
Casual Jim7-Feb-06 8:13
memberCasual Jim7-Feb-06 8:13 
GeneralCSS & JS Includes Pin
joeyb10003-Feb-06 3:30
memberjoeyb10003-Feb-06 3:30 
GeneralRe: CSS & JS Includes Pin
Casual Jim7-Feb-06 8:04
memberCasual Jim7-Feb-06 8:04 
QuestionHow I check up that "output stream of an ASP.NET page" is done? Pin
Dolonk24-Jan-06 21:17
memberDolonk24-Jan-06 21:17 
AnswerRe: How I check up that "output stream of an ASP.NET page" is done? Pin
Casual Jim24-Jan-06 22:26
memberCasual Jim24-Jan-06 22:26 
QuestionMedium trust? Pin
aerodave22-Jan-06 19:33
memberaerodave22-Jan-06 19:33 
GeneralJavascript nasties Pin
vaticnz11-Jan-06 9:15
membervaticnz11-Jan-06 9:15 
GeneralRe: Javascript nasties Pin
Casual Jim22-Jan-06 16:05
memberCasual Jim22-Jan-06 16:05 
GeneralRe: Javascript nasties Pin
ahoja7-Feb-06 22:48
memberahoja7-Feb-06 22:48 
QuestionWhat kind of files should be excluded? Pin
MorningZ10-Jan-06 6:04
memberMorningZ10-Jan-06 6:04 
AnswerRe: What kind of files should be excluded? Pin
Casual Jim10-Jan-06 8:49
memberCasual Jim10-Jan-06 8:49 
GeneralFailing in IE6 Pin
aerodave9-Jan-06 12:34
memberaerodave9-Jan-06 12:34 
GeneralRe: Failing in IE6 Pin
Casual Jim10-Jan-06 9:03
memberCasual Jim10-Jan-06 9:03 
GeneralRe: Failing in IE6 Pin
Casual Jim22-Jan-06 16:08
memberCasual Jim22-Jan-06 16:08 
GeneralRe: Failing in IE6 Pin
aerodave22-Jan-06 19:31
memberaerodave22-Jan-06 19:31 
GeneralRe: Failing in IE6 Pin
Neetflash23-May-06 16:08
memberNeetflash23-May-06 16:08 
GeneralIIS Compression Pin
Jon Sagara6-Jan-06 13:46
memberJon Sagara6-Jan-06 13:46 
GeneralRe: IIS Compression Pin
Casual Jim6-Jan-06 13:58
memberCasual Jim6-Jan-06 13:58 
GeneralRe: IIS Compression Pin
Joshua Lunsford8-Jan-06 11:39
memberJoshua Lunsford8-Jan-06 11:39 

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

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

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