Thursday, September 27, 2007

C# HttpResponse.Filter Property and http commression

You can use that property to modify the HTTP entity body before transmission to the client browser.

If you want to send the http response compressed for example.

First you should determine whether client browser accepts compressed content.

Browsers send this information in http header value Accept-encoding.

if(Request.Headers["Accept-encoding"] != null &&
Request.Headers["Accept-encoding"].Contains("gzip"))
{
}

or

if(Request.Headers["Accept-encoding"] != null &&
Request.Headers["Accept-encoding"].Contains("deflate"))
{
}

Here is the complete code. You can put it in you base page, in OnInit or OnLoad methods for example
if(Request.Headers["Accept-encoding"] != null)
{
if (
Request.Headers["Accept-encoding"].Contains("deflate"))
{
Response.Filter = new DeflateStream(Response.Filter, CompressionMode.Compress, true);
Response.AppendHeader("Content-encoding", "deflate"); }
else if (Request.Headers["Accept-encoding"].Contains("deflate"))
{
Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress, true);
Response.AppendHeader("Content-encoding", "gzip");
}
}


No comments: