如何压缩输出由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 {...}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。