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]
正文到此结束

热门推荐