using System.IO.Compression;
Ashx文件头部引用这个压缩类。
在正文中
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
string acceptEncoding = context.Request.Headers["Accept-Encoding"].ToString().ToUpperInvariant();
if (!String.IsNullOrEmpty(acceptEncoding))
{
if (acceptEncoding.Contains("GZIP"))
{
//输出流头部GZIP压缩
context.Response.AppendHeader("Content-encoding", "gzip");
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
//输出流头部DEFLATE压缩
context.Response.AppendHeader("Content-encoding", "deflate");
context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
}
}
//下面就可以Response.Write文字了,浏览器中收到的就是压缩过的
}
GZIP压缩
context.Response.AppendHeader("Content-encoding", "gzip");
context.Response.Filter = new GZipStream(context.Response.Filter, CompressionMode.Compress);
}
else if (acceptEncoding.Contains("DEFLATE"))
{
//输出流头部DEFLATE压缩
context.Response.AppendHeader("Content-encoding", "deflate");
context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
}
}
//下面就可以Response.Write文字了,浏览器中收到的就是压缩过的
}
未压缩时文本大小和传输时间
压缩后文本大小和传输时间
MVC API中启用压缩方法
1.nuget安装Microsoft.AspNet.WebApi.Extensions.Compression.Server
2.global.asax.cs里引用
using Microsoft.AspNet.WebApi.Extensions.Compression.Server;
using System.Net.Http.Extensions.Compression.Core.Compressors;
3.global.asax.cs的Application_Start方法里加入:
GlobalConfiguration.Configuration.MessageHandlers.Insert(0, new ServerCompressionHandler(new DeflateCompressor(),new GZipCompressor())); //开启压缩