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]】


     

  • 相关阅读:
    前端- css
    前端- html -总结
    2016.9.15 黑客编程之无限启动
    2016.9.14 JavaScript入门之七面向对象和函数
    2016.9.13 JavaScript入门之六基础函数
    2016.9.1 JavaScript入门之五
    2016.9.9 网络工程师之路由器技术
    2016.8.14 网络工程师之网关协议
    2016.8.27 JavaScript入门之四
    2016.8.22 JavaScript入门之三
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15735979.html
Copyright © 2011-2022 走看看