zoukankan      html  css  js  c++  java
  • WebAPI性能优化实例

    public class GZipCompressionAttribute : ActionFilterAttribute
    {
    public override void OnActionExecuted(HttpActionExecutedContext actContext)
    {
    var content = actContext.Response.Content;
    var bytes = content == null ? null : content.ReadAsByteArrayAsync().Result;
    var zlibbedContent = bytes == null ? new byte[0] :
    CompressionHelper.GZipByte(bytes);
    actContext.Response.Content = new ByteArrayContent(zlibbedContent);
    actContext.Response.Content.Headers.Remove("Content-Type");
    actContext.Response.Content.Headers.Add("Content-encoding", "gzip");
    actContext.Response.Content.Headers.Add("Content-Type", "application/json");
    base.OnActionExecuted(actContext);
    }
    }


    public class DeflateCompressionAttribute : ActionFilterAttribute
    {
    public override void OnActionExecuted(HttpActionExecutedContext actContext)
    {
    var content = actContext.Response.Content;
    var bytes = content == null ? null : content.ReadAsByteArrayAsync().Result;
    var zlibbedContent = bytes == null ? new byte[0] :
    CompressionHelper.DeflateByte(bytes);
    actContext.Response.Content = new ByteArrayContent(zlibbedContent);
    actContext.Response.Content.Headers.Remove("Content-Type");
    actContext.Response.Content.Headers.Add("Content-encoding", "deflate");
    actContext.Response.Content.Headers.Add("Content-Type", "application/json");
    base.OnActionExecuted(actContext);
    }
    }

    public class CompressionHelper
    {
    public static byte[] DeflateByte(byte[] str)
    {
    if (str == null)
    {
    return null;
    }

    using (var output = new MemoryStream())
    {
    using (
    var compressor = new DeflateStream(
    output, CompressionMode.Compress))
    {
    compressor.Write(str, 0, str.Length);
    }

    return output.ToArray();
    }
    }
    public static byte[] GZipByte(byte[] str)
    {
    if (str == null)
    {
    return null;
    }
    using (var output = new MemoryStream())
    {
    using (
    var compressor = new GZipStream(
    output, CompressionMode.Compress))
    {
    compressor.Write(str, 0, str.Length);
    }

    return output.ToArray();
    }
    }
    }

    调用方式 

    WebAPI方法前加

    【DeflateCompression]】 或 【GZipCompression】

    建议使用 【DeflateCompression]】


     

  • 相关阅读:
    IE6 select穿透问题(div 定位无法遮盖select)!
    NYOJ 35 表达式求值
    网络运营商名称显示&SIM名称显示
    Android开发四大组件之Service(具体解释篇)
    RabbitMQ之消息确认机制(事务+Confirm)
    rabbitmq的发布确认和事务
    java finally return
    用 consul + consul-template + registrator + nginx 打造真正可动态扩展的服务架构
    consul vs etcd3
    LinkedIn实时低延迟数据抓取系统Databus开源
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15735979.html
Copyright © 2011-2022 走看看