加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 压缩不起作用

发布时间:2020-12-16 06:31:22 所属栏目:asp.Net 来源:网络整理
导读:我需要压缩数据导出网站的所有动态内容. 我尝试了很多方法,没有任何作用. Chrome显示内容未压缩,并且“Content-Encoding”标头不存在. 尝试这样做作为最后的手段(在编写任何响应之前): context.Response.Filter = new DeflateStream(context.Response.Filte
我需要压缩数据导出网站的所有动态内容.
我尝试了很多方法,没有任何作用. Chrome显示内容未压缩,并且“Content-Encoding”标头不存在.

尝试这样做作为最后的手段(在编写任何响应之前):

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

记录显示此代码正确执行.
但是,Chrome会再次显示内容未被压缩.

UPD在使用IIS内置压缩时,似乎工作和请求跟踪显示“DYNAMIC_COMPRESSION_SUCCESS”.但是,IE仍显示响应未压缩.当我使用localhost名称从服务器本身请求页面时也是如此.

有任何想法吗?

解决方法

如果要手动执行此操作,请首先检查是否支持压缩,

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 Encoding Caveats
> Built-in GZip/Deflate Compression on IIS 7.x
> Benefits and Drawbacks of IIS 7 Compression

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读