Compressing HTTP output with an HttpModule (C#) : GZipStream « File Directory « ASP.NET Tutorial






using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.IO;
using System.IO.Compression;

namespace ClassLibrary1
{
    public class Class1 : IHttpModule
    {
        void IHttpModule.Dispose()
        {
            throw new Exception("The method or operation is not implemented.");
        }

        void IHttpModule.Init(HttpApplication context)
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
        }

        void context_BeginRequest(object sender, EventArgs e)
        {
            HttpApplication app = (HttpApplication)sender;

            string encodings = app.Request.Headers.Get("Accept-Encoding");

            if (encodings == null)
                return;

            Stream s = app.Response.Filter;

            encodings = encodings.ToLower();

            if (encodings.Contains("gzip"))
            {
                app.Response.Filter = new GZipStream(s, CompressionMode.Compress);
                app.Response.AppendHeader("Content-Encoding", "gzip");
                app.Context.Trace.Warn("GZIP Compression on");
            }
            else
            {
                app.Response.Filter =
                              new DeflateStream(s, CompressionMode.Compress);
                app.Response.AppendHeader("Content-Encoding", "deflate");
                app.Context.Trace.Warn("Deflate Compression on");
            }
        }
    }
}








10.15.GZipStream
10.15.1.Compressing a file using GZipStream (C#)
10.15.2.Compressing a file using GZipStream (VB)
10.15.3.Compressing HTTP output with an HttpModule (C#)
10.15.4.Compressing HTTP output with an HttpModule (VB)