Una delle cose che spesso si dimentica quando si progetta un'applicazione web è che esistono ancora molti utenti che navigano con modem tradizionali e quindi la dimensione della pagina impatta molto sulle prestazioni. Con poche righe di codice è possibile implementare un handler che comprime la pagina con gzip o deflate in caso che il browser dell'utente supporti questo formato. L'handler è primitivo e mostra in generale come sia possibile effettuare una compressione semplicemente aggiungendo un filtro alla response.
namespace MyWebHandlers {
    public class CompressorModule : IHttpModule {
        #region IHttpModule Members
        public void Dispose() {
            
        }
        public void Init(HttpApplication context) {
            context.PreRequestHandlerExecute += PreRequestHandlerExecute;
        }
        private Boolean RequestCanBeZipped(String page) {
            return page.EndsWith(".aspx");
        }
        private void PreRequestHandlerExecute(
            object Sender, EventArgs e) {
            if (RequestCanBeZipped(HttpContext.Current.Request.FilePath))
                CompressRequest();
        }
        private void CompressRequest() {
            if (HttpContext.Current.Request.Headers["Accept-encoding"] != null &&
                HttpContext.Current.Request.Headers["Accept-encoding"].Contains("gzip")) {
                GZipStream gzip = new GZipStream(HttpContext.Current.Response.Filter, CompressionMode.Compress, true);
                HttpContext.Current.Response.Filter = gzip;
                HttpContext.Current.Response.AppendHeader("Content-encoding", "gzip");
            }
            else if (HttpContext.Current.Request.Headers["Accept-encoding"] != null &&
                HttpContext.Current.Request.Headers["Accept-encoding"].Contains("deflate")) {
                DeflateStream defl = new DeflateStream(HttpContext.Current.Response.Filter, CompressionMode.Compress, true);
                HttpContext.Current.Response.Filter = defl;
                HttpContext.Current.Response.AppendHeader("Content-encoding", "deflate");
            }
        }
        #endregion
    }
}