利用 ActionFilter 为 ASP.NET Web API 添加 GZip 压缩功能
来源:互联网 发布:自己如何做淘宝店铺 编辑:程序博客网 时间:2024/06/07 04:44
直接上代码
public class DeflateCompressionAttribute : ActionFilterAttribute{ public override void OnActionExecuted(HttpActionExecutedContext actContext) { var contentType = actContext.Response.Content.Headers.ContentType.ToString(); 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", contentType); 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 Ionic.Zlib.DeflateStream(output, Ionic.Zlib.CompressionMode.Compress, Ionic.Zlib.CompressionLevel.BestSpeed)) { compressor.Write(str, 0, str.Length); } return output.ToArray(); } }}
使用 DeflateCompression 来标记需要压缩的 Web API
public class V1Controller : ApiController{ [DeflateCompression] public HttpResponseMessage GetCustomers() { }}
备注
- 增加对 Request 中 Accept-Encoding 设定的判断,如果客户端请求包含压缩请求才进行压缩
- 示例利用了第三方库来进行,可以视情况来自定义替换为其他库
0 0
- 利用 ActionFilter 为 ASP.NET Web API 添加 GZip 压缩功能
- asp.net添加gzip压缩
- ASP.NET Web API GZip
- IIS6.0 asp.net 应用程序部署 Gzip压缩功能
- IIS6.0 asp.net 应用程序部署 Gzip压缩功能
- ASP.NET服务端GZIP压缩
- ASP.NET服务端GZIP压缩
- ASP.NET网站gzip压缩
- ASP.NET MVC Gzip 压缩
- 为benchmark添加gzip功能
- ActionFilter for MVC asp.net
- 实时进行GZIP压缩优化Asp.Net
- ASP.NET中GZIP压缩优化
- ASP.NET中GZIP压缩优化
- Asp.net gzip压缩的启用
- asp.net 如何开启GZIP压缩
- asp.net mvc使用gzip压缩
- ASP.NET服务端GZIP压缩(CompressionModule压缩模块)
- Xcode8标准注释格式的添加方式
- JSF标签学习总结下
- numpy基本入门操作汇总一
- OSG学习笔记25——屏幕坐标——相机坐标——世界坐标之间的转换
- 线段树,区间最值
- 利用 ActionFilter 为 ASP.NET Web API 添加 GZip 压缩功能
- 【小作品】react构建简单SPA(react+webpack+router+es6)
- nn pic model preprocess note
- 静态链表与动态链表
- Android WebView 开发详解(二)
- Android6.0以上权限管理问题(权限被拒绝后)
- 典型递归的思想解决汉诺塔问题
- 一个简单的扫描目录的程序
- android ndk第一步使用ndk和Cmake编译.so文件