【问题标题】:Gzip compression asp.net c#gzip压缩asp.net c#
【发布时间】:2012-05-17 16:07:20
【问题描述】:

我只是想调整我的方法以在浏览器接受 gzip 时传输压缩数据。 else 部分已经有效。我只想调整if 部分。代码如下:

private void writeBytes()
{
    var response = this.context.Response;

    if (canGzip)
    {
        response.AppendHeader("Content-Encoding", "gzip");
        //COMPRESS WITH GZipStream
    }
    else
    {
        response.AppendHeader("Content-Length", this.responseBytes.Length.ToString());
        response.ContentType = this.isScript ? "text/javascript" : "text/css";
        response.AppendHeader("Content-Encoding", "utf-8");
        response.ContentEncoding = Encoding.Unicode;
        response.OutputStream.Write(this.responseBytes, 0, this.responseBytes.Length);
        response.Flush();
    }
}

【问题讨论】:

  • 您为什么不使用 Web 服务器配置来压缩数据?

标签: c# asp.net gzip


【解决方案1】:

看起来你想添加 Response.Filter,见下文。

private void writeBytes()
{
    var response = this.context.Response;
    bool canGzip = true;

    if (canGzip)
    {
        Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
        Response.AppendHeader("Content-Encoding", "gzip");
    }
    else
    {
        response.AppendHeader("Content-Encoding", "utf-8");
    }

    response.AppendHeader("Content-Length", this.responseBytes.Length.ToString());
    response.ContentType = this.isScript ? "text/javascript" : "text/css";
    response.ContentEncoding = Encoding.Unicode;
    response.OutputStream.Write(this.responseBytes, 0, this.responseBytes.Length);
    response.Flush();
    }

}

【讨论】:

    【解决方案2】:

    您应该使用GZipStream 类。

    using (var gzipStream = new GZipStream(streamYouWantToCompress, CompressionMode.Compress))
    {
        gzipStream.CopyTo(response.OutputStream);
    }
    

    【讨论】:

      猜你喜欢
      • 2021-07-28
      • 2011-04-05
      • 2015-07-14
      • 1970-01-01
      • 2010-11-22
      • 2013-10-01
      • 2011-05-21
      • 1970-01-01
      • 2015-10-10
      相关资源
      最近更新 更多