1 /// <summary> 2 /// 允许压缩 3 /// </summary> 4 public class AllowCompressAttribute : System.Web.Mvc.ActionFilterAttribute 5 { 6 /// <summary> 7 /// 压缩方法 8 /// </summary> 9 public override void OnResultExecuting(ResultExecutingContext filterContext) 10 { 11 string acceptEncoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"]; 12 if (String.IsNullOrEmpty(acceptEncoding)) return; 13 var response = filterContext.HttpContext.Response; 14 acceptEncoding = acceptEncoding.ToUpperInvariant(); 15 //查看客户端是否支持压缩 16 if (acceptEncoding.Contains("GZIP")) 17 { 18 response.AppendHeader("Content-Encoding", "gzip"); 19 response.Filter = new GZipStream(response.Filter, CompressionMode.Compress); 20 } 21 else if (acceptEncoding.Contains("DEFLATE")) 22 { 23 response.AppendHeader("Content-Encoding", "deflate"); 24 response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress); 25 } 26 base.OnResultExecuting(filterContext); 27 } 28 }