压缩不工作(Compression is not working)

2019-09-18 09:26发布

我需要压缩我的数据导出网站的所有动态内容。
我试过很多方法,没有什么工作。 铬显示内容不被压缩和“内容编码”报头不存在。

试图做这样的作为最后的手段方法(之前写任何回应):

        context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress);
        context.Response.AppendHeader("Content-Encoding", "deflate");

记录显示,该代码是正确执行。 然而,Chrome会显示的内容不被压缩,再次。

UPD在使用IIS内置的压缩​​功能,它似乎工作,并请求跟踪显示“DYNAMIC_COMPRESSION_SUCCESS”。 然而,IE仍然显示响应不被压缩。 同样的,当我要求使用本地主机的名称服务器本身的页面。

有任何想法吗?

Answer 1:

如果你想手动做到这一点首先检查所支持的压缩,

public static bool IsGZipSupported()
{
    string AcceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"];
    if (!string.IsNullOrEmpty(AcceptEncoding) &&
            (AcceptEncoding.Contains("gzip") || AcceptEncoding.Contains("deflate")))
        return true;
    return false;
}

和压缩你的回应,

public static void GZipEncodePage()
{
            if (IsGZipSupported()) {
                HttpResponse Response = HttpContext.Current.Response;

                string AcceptEncoding = HttpContext.Current.Request.Headers("Accept-Encoding");
                if (AcceptEncoding.Contains("gzip")) {
                    Response.Filter = new System.IO.Compression.GZipStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);
                    Response.AppendHeader("Content-Encoding", "gzip");
                } else {
                    Response.Filter = new System.IO.Compression.DeflateStream(Response.Filter, System.IO.Compression.CompressionMode.Compress);


            Response.AppendHeader("Content-Encoding", "deflate");
}

您可以检查过滤器连接之前的头被发送到客户端

protected void Application_PreSendRequestHeaders()
{
    HttpResponse response = HttpContext.Current.Response;
    if (response.Filter is GZipStream && response.Headers["Content-encoding"] != "gzip")
        response.AppendHeader("Content-encoding", "gzip");
    else if (response.Filter is DeflateStream && response.Headers["Content-encoding"] != "deflate")
        response.AppendHeader("Content-encoding", "deflate");
}

欲了解更多信息,请查看该职位;

  • ASP.NET GZIP编码注意事项

  • 内置的GZip / deflate压缩在IIS 7.x的

  • 优点和IIS 7压缩的缺点



Answer 2:

而不是试图这样做手工我就靠内置到IIS预先编写的(和测试),微软的源代码,会为你这样做:

安装在机器上动态内容压缩 (子弹5中的链路)和在IIS启用它 。 IIS现在将处理压缩对静态和动态内容。 维护更少的代码(和总是有错误)始终是一件好事!



Answer 3:

如果您使用的IIS7 +,有一个压缩选项。 导航到你的网站,在右边主窗口中,单击“压缩”,并检查所有2个复选框:

  1. 启用动态内容压缩
  2. 启用静态内容压缩


文章来源: Compression is not working