1:在你的ASP.NET Web API中使用GZIP 或 Deflate 。
对于减少响应包的大小和响应速度,压缩是一种简单而有效的方式。
这是一个非常有必要使用的功能,你可以查看更多关于压缩的文章在我的博客 http://blog.developers.ba/asp-net-web-api-gzip-compression-actionfilter/

本人是在dll抽出源代码使用的功能。

原dll code:

1:新建过滤器(面向切面编程aop)

Code:

        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[] :
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, true))
{
compressor.Write(str, , str.Length);
} return output.ToArray();
}
}
}

使用:以特性的方式在想要压缩的webapi方法以[xxx]方式添加。

运行结果:

解压code:

 class Program
{
static void Main(string[] args)
{
string sss = HttpGet("http://localhost:16808//api/GPSStatus/GetListHis?i=1&flag=0&pageIndex=1&pageSize=10", true); } public static string HttpGet(string url, object par = null, bool IsGZip = false)
{
WebRequest request = null;
WebResponse response = null;
try
{
//创建请求
request = HttpWebRequest.Create(url);
request.Method = "GET";
request.ContentType = "application/json";
request.Credentials = CredentialCache.DefaultCredentials;
request.Timeout = ;
response = request.GetResponse();
string result = null;
if (IsGZip)
{
using (var stream = response.GetResponseStream())
{
byte[] bytes = new byte[response.ContentLength];
stream.Read(bytes, , bytes.Length);
result = UnJy(bytes);
}
}
else
{
using (StreamReader sr = new StreamReader(response.GetResponseStream(), Encoding.UTF8))
result = sr.ReadToEnd();
}
return result;
}
catch (Exception)
{
return null;
}
finally
{
if (response != null) response.Close();
if (request != null) request.Abort();
}
} /// <summary>
/// 解压
/// </summary>
public static string UnJy(byte[] by)
{
using (MemoryStream stream = new MemoryStream(by))
{
Stream decompressor = new DeflateStream(stream, CompressionMode.Decompress);
return UncompressString(by, decompressor);
}
} private static string UncompressString(byte[] compressed, Stream decompressor)
{
byte[] buffer = new byte[0x400];
Encoding encoding = Encoding.UTF8;
using (MemoryStream stream = new MemoryStream())
{
using (decompressor)
{
int num;
while ((num = decompressor.Read(buffer, , buffer.Length)) != )
{
stream.Write(buffer, , num);
}
}
stream.Seek(0L, SeekOrigin.Begin);
StreamReader reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
}
} 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,true))
{
compressor.Write(str, , str.Length);
} return output.ToArray();
}
}
}
}

当然你也可以使用文章开头的链接直接附加Dll

其他的优化。

http://www.oschina.net/translate/8-ways-improve-asp-net-web-api-performance

不得不说的wepapi 优化的更多相关文章

  1. MSSQL中IN是否用索引.....[转]

    作者:no_mIss 用MSSQL时间快一年了,数据量有时会相对比较多,所以经常要优化,也看过很多资料,但大都有一句:IN.NOT IN不用索引,今天发此贴希望能有人参与讨论,到底IN用不用索引,如果 ...

  2. 【题解】Coins(二进制拆分+bitset)

    [题解]Coins(二进制拆分+bitset) [vj] 俗话说得好,bitset大法吼啊 这道题要不是他多组数据卡死了我复杂度算出来等于九千多万的选手我还不会想这种好办法233 考虑转移的实质是怎样 ...

  3. noip模拟30[毛毛毛探探探]

    \(noip模拟30\;solutions\) 所以说,这次被初中的大神给爆了????? 其实真的不甘心,这次考场上的遗憾太多,浪费的时间过多,心情非常不好 用这篇题解来结束这场让人伤心的考试吧 \( ...

  4. 03.SQLServer性能优化之---存储优化系列

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概  述:http://www.cnblogs.com/dunitian/p/60413 ...

  5. MySQL优化聊两句

    原文地址:http://www.cnblogs.com/verrion/p/mysql_optimised.html MySQL优化聊两句 MySQL不多介绍,今天聊两句该如何优化以及从哪些方面入手, ...

  6. MySQL大数据优化

    我们考虑的情况是在你的数据量很大的情况下,千万级别的数据量.不要当我们的请求响应时间已经让我无法忍受的时候,再来想起来优化,可能有点迟了.因为可能会丢失很多潜在的价值客户.所以,在我们当初设计表,或者 ...

  7. Java开发代码性能优化总结

    代码优化,可能说起来一些人觉得没用.可是我觉得应该平时开发过程中,就尽量要求自己,养成良好习惯,一个个小的优化点,积攒起来绝对是有大幅度效率提升的.好了,将平时看到用到总结的分享给大家. 代码优化的目 ...

  8. 开发 ASP.NET vNext 续篇:云优化的概念、Entity Framework 7.0、简单吞吐量压力测试

    继续上一篇<开发 ASP.NET vNext 初步总结(使用Visual Studio 2014 CTP1)>之后, 关于云优化和版本控制: 我本想做一下MAC和LINUX的self-ho ...

  9. MYSQL索引结构原理、性能分析与优化

    [转]MYSQL索引结构原理.性能分析与优化 第一部分:基础知识 索引 官方介绍索引是帮助MySQL高效获取数据的数据结构.笔者理解索引相当于一本书的目录,通过目录就知道要的资料在哪里, 不用一页一页 ...

随机推荐

  1. 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\106f9ae8\cc0e1

    在本地开发环境没问题,但是发布到服务器出现:未能写入输出文件"c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.Ne ...

  2. 如何利用git由本机向github上传文件

    首先,下载一个git,安装. 安装成功之后,输入以下命令,引号内的为你自己的名字和邮箱git config --global user.name "Your Name"git co ...

  3. 使用DataTable更新数据库

    简例: string connStr = string.Format("Driver={1}Microsoft Access Driver (*.mdb){2};DBQ={0};" ...

  4. Activity详解生命周期(Android)

    Activity是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器)之 ...

  5. NOIP2016滚粗记

    想了好久还是决定要写... Day0 Day-5得感冒一直没好,连磕5天药丸. 早晨得知爸妈都要上班并不能送我到校的消息,于是计划10:30集合,定表8:45准备自己走去学校. 然后平常睡得有点晚,结 ...

  6. Android源码——Activity进程内启动

    进程内启动Activity MainActivity组件向ActivityManagerService发送一个启动SubActivityInProcess组件的进程间通信请求: ActivityMan ...

  7. JavaScript系列文章:详解正则表达式之一

    正则表达式是一个精巧的利器,经常用来在字符串中查找和替换,JavaScript语言参照Perl,也提供了正则表达式相关模块,开发当中非常实用,在一些类库或是框架中,比如jQuery,就存在大量的正则表 ...

  8. DOM(文档对象模型)

    1.定义: DOM是Document Object Model文档对象模型的缩写.是针对HTML和XML文档的一个API,通过DOM可以去改变文档. 例如:我们有一段HTML,那么如何访问第二层第一个 ...

  9. Sonar安装配置

    https://www.sonarqube.org/downloads/ 下载sonar.当前版本为6.2 解压压缩包,进行配置: 修改sonarqube-6.2\conf\sonar.propert ...

  10. Xcode 生成静态库相关设置:

    Xcode 生成静态库相关设置: #Build Setting1. Architectures ------- Architectures -----> $(ARCHS_STANDARD) -- ...