asp.net - GZIP 与 DEFLATE 压缩相比有何优势?

标签 asp.net html optimization http-headers

我在 asp.NET 4 (C#) 中有一个网站。

我正在努力寻找一种方法来更好地优化我网站的带宽。

我读过很多文章说 DEFLATE 比 GZIP 更快更小,因为 GZIP(基于 DEFLATE)添加了一些额外的数据。

检查 bing.com 和 google.com 的 header ,它们似乎都发送 GZIP 编码的数据。

假设我读到的是真实的,那么在这种情况下我会错过 GZIP 的优势。所以我怀疑应该有充分的理由更喜欢 GZIP 而不是 DEFLATE。

我的问题:

  • GZIP 是否比我不知道的 DEFLATE 有任何优势?
  • 知道为什么主要搜索引擎使用 GZIP 吗?

这是我用来发送 DEFLATE 的代码(来自 Global.asax):

protected void Application_PreRequestHandlerExecute(object sender, EventArgs e)
    {

        HttpApplication app = sender as HttpApplication;
        string acceptEncoding = app.Request.Headers["Accept-Encoding"];
        Stream prevUncompressedStream = app.Response.Filter;

        if (!(app.Context.CurrentHandler is Page ||
            app.Context.CurrentHandler.GetType().Name == "SyncSessionlessHandler") ||
            app.Request["HTTP_X_MICROSOFTAJAX"] != null)
            return;

        if (acceptEncoding == null || acceptEncoding.Length == 0)
            return;

        acceptEncoding = acceptEncoding.ToLower();

        if (acceptEncoding.Contains("deflate") || acceptEncoding == "*")
        {
            // defalte
            app.Response.Filter = new DeflateStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "deflate");
        }
        else if (acceptEncoding.Contains("gzip"))
        {
            // gzip
            app.Response.Filter = new GZipStream(prevUncompressedStream,
                CompressionMode.Compress);
            app.Response.AppendHeader("Content-Encoding", "gzip");
        }
    }

最佳答案

Gzip 更可靠,因为它压缩后加上一些 header 和校验和。换句话说,gzip 是放气的,还有额外的 header 和校验和。 Deflate 是用 adler32 检查的,它也是 gzip 的一部分。因为 gzip 有效负载是 DEFLATE 压缩的有效负载。

Deflate info

Gzip info

a gzip file/stream contains:

- a 10-byte header, containing a magic number, a version number and a time stamp
- optional extra headers, such as the original file name,
- a body, containing a DEFLATE-compressed payload
- an 8-byte footer, containing a CRC-32 checksum and the length of the original uncompressed data

关于asp.net - GZIP 与 DEFLATE 压缩相比有何优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7243705/

相关文章:

php - 从 url 中删除目录名称? (example.org/folder1/file 到 example.org/file)

css - 在隐藏的单选框/复选框上显示 HTML5 错误消息/验证

html - 当我的表单自动调整大小时,如何阻止网站元素被推送?

css - 'react-scripts' 构建在 CSS 中嵌入一些图像作为数据 uri

optimization - 在 Weka 中使用 RBFKernel(C 和 gamma)优化 SMO

javascript - 具有集成安全性的跨域 POST

ASP.net,为什么它使用长元素名称?

c# - 将第二类添加到 RowDataBound 中的 gridview 行

python - 解决解决方案不可行的不平等系统

c# - 以编程方式在 ASP.NET 中添加用户控件