利用Filter对asp.net页面进行压缩
if (!Request.UserAgent.ToLower().Contains("konqueror")) { if (Request.Headers["Accept-encoding"] != null && Request.Headers["Accept-encoding"].Contains("gzip")) { Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress, true); Response.AppendHeader("Content-encoding", "gzip"); } else if (Request.Headers["Accept-encoding"] != null && Request.Headers["Accept-encoding"].Contains("deflate")) { Response.Filter = new DeflateStream(Response.Filter, CompressionMode.Compress, true); Response.AppendHeader("Content-encoding", "deflate"); } }
这断代码是在codeproject上无意中找到的,感觉非常好,特拿来分享。
Request.UserAgent.ToLower().Contains("konqueror"))
这句话是用来过滤掉konqueror浏览器,据原作者说这个浏览器对gzip和deflate可能支持不好,有bug。
这里笔者还发现一个问题如果Response.BufferOutput=false的话,这断代码就不好用了,大家使用的时候要注意。