asp.net 根据浏览器支持的压缩格式进行响应流压缩
asp .net 开发过程中,我们可以根据浏览器支持的压缩格式进行响应流的压缩以节省带宽。
新建一个自定义特性类,继承筛选器特性的基类。具体代码如下:
public class CustomActionTrribute : ActionFilterAttribute { public override void OnActionExecuting(ActionExecutingContext filterContext) { var encoding = filterContext.HttpContext.Request.Headers["Accept-Encoding"].ToString(); var Response = filterContext.HttpContext.Response; if (encoding.Contains("gzip")) { Response.AppendHeader("Content-Encoding", "gzip"); Response.Filter = new GZipStream(Response.Filter, CompressionMode.Compress); } else if (encoding.Contains("deflate")) { Response.AppendHeader("Content-Encoding", "deflate"); Response.Filter = new DeflateStream(Response.Filter, CompressionMode.Compress); } base.OnActionExecuting(filterContext); } }
然后通过FilterConfig类把自定义的特性类添加到全局筛选器的类中:
public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new CustomActionTrribute()); } }
最后在Global.asax全局文件中的程序启动方法中加入全局筛选器:
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); RouteConfig.RegisterRoutes(RouteTable.Routes); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); }
这样就完成了对响应流的压缩!
奕独客》原创,转载请保留文章出处。
本文链接:asp.net 根据浏览器支持的压缩格式进行响应流压缩 [https://www.yiduk.com/源码分享/6.html]
版权声明:若无特殊注明,本文为《正文到此结束