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


     

  • 相关阅读:
    MySQL 数据类型
    MySQL 存储引擎
    在Windows上安装MySQL
    windows 查看端口占用
    Linux 配置静态IP
    Nginx 核心配置
    Nginx 简介
    Linux下使用Nginx
    Tomcat 核心配置
    Tomcat 项目部署、账户配置、状态监测
  • 原文地址:https://www.cnblogs.com/lhxsoft/p/15735979.html
Copyright © 2020-2023  润新知