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


     

  • 相关阅读:
    平衡树(Splay):Splaytree POJ 3580 SuperMemo
    数据结构:(平衡树,链表)BZOJ 1588[HNOI2002]营业额统计
    主席树:HDU 4417 Super Mario
    主席树:POJ2104 K-th Number (主席树模板题)
    后缀数组模板
    后缀数组:HDU1043 Longest Common Substring
    后缀数组:SPOJ SUBST1
    关于PHP程序员解决问题的能力
    现在写 PHP,你应该知道这些
    PHP 7 的几个新特性
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15735979.html
Copyright © 2011-2022 走看看