利用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的话,这断代码就不好用了,大家使用的时候要注意。
posted @ 2011-10-20 09:15  Tom.汤  阅读(711)  评论(5编辑  收藏  举报