在ASHX中使用GZip压缩输出的文字流

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())); //开启压缩

发布了85 篇原创文章 · 获赞 31 · 访问量 26万+

猜你喜欢

转载自blog.csdn.net/5653325/article/details/53635554