asp.net compression in a hurry
2008-01-11 @ 17:32#
recently, i made a post that showed how to add streaming compression support to your ASP.NET projects for any type of dynamic content. turns out this was a bit more than i needed in some cases. sometimes, i have a quick one-off ASHX file that i need to add compression to, but don't want to write a Response filter. in that case, you can just add the following method to your code and make the call before you do your first Response.Write statement:
private void SetCompression(HttpContext ctx)
{
// call this method before your first Response.Write: SetCompression(HttpContext.Current);
string accept = (ctx.Request.Headers["Accept-encoding"] != null ? ctx.Request.Headers["Accept-encoding"] : string.Empty);
if (accept.Contains("gzip"))
{
ctx.Response.Filter = new GZipStream(ctx.Response.Filter, CompressionMode.Compress);
ctx.Response.AppendHeader("Content-Encoding", "gzip");
return;
}
if (accept.Contains("deflate"))
{
ctx.Response.Filter = new DeflateStream(ctx.Response.Filter, CompressionMode.Compress);
ctx.Response.AppendHeader("Content-Encoding", "deflate");
return;
}
// if no match found
return;
}