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


     

  • 相关阅读:
    python线程、线程池
    day10 知识点
    socketserver 进阶之I/O多路复用
    socketserver
    socket
    设计模式
    剑指offer:整数中1出现的次数
    剑指offer:二叉搜索树与双向链表
    剑指offer:扑克牌顺子
    剑指offer:孩子们的游戏(圆圈中最后剩下的数)
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15735979.html
Copyright © 2011-2022 走看看