如何压缩输出由asp.net mvc应用程序发送?
解决方法
这里是我使用(作为这个monent时间):
using System.IO.Compression; public class CompressAttribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"]; if (string.IsNullOrEmpty(encodingsAccepted)) return; encodingsAccepted = encodingsAccepted.ToLowerInvariant(); var response = filterContext.HttpContext.Response; if (encodingsAccepted.Contains("deflate")) { response.AppendHeader("Content-encoding","deflate"); response.Filter = new DeflateStream(response.Filter,CompressionMode.Compress); } else if (encodingsAccepted.Contains("gzip")) { response.AppendHeader("Content-encoding","gzip"); response.Filter = new GZipStream(response.Filter,CompressionMode.Compress); } } }
在控制器中的使用:
[Compress] public class BookingController : BaseController {...}
还有其他varients,但这工作相当不错。 (btw,我使用我的BaseController上的[Compress]属性来保存项目中的重复,而上面是在控制器基于控制器。
[编辑]。为了简化使用,您还可以在BaseController本身中包括[Compress] oneshot,从而,每个继承的子控制器默认访问该功能:
[Compress] public class BaseController : Controller {...}