【问题标题】:How do you know if the HTTP compression is working?您如何知道 HTTP 压缩是否有效?
【发布时间】:2025-11-24 08:45:01
【问题描述】:

您如何知道 HTTP 压缩设置是否有效?在浏览器解压缩之前,我可以使用任何工具查看压缩页面吗?有什么工具可以测量压缩量和响应速度吗?

【问题讨论】:

    标签: http iis-7 compression


    【解决方案1】:

    这不是 IIS 特定的,但您可以使用 cURL:

    curl -H 'Accept-Encoding: gzip,deflate' -D - http://example.com
    

    然后在输出中查找Content-Encoding: gzip 标头。

    【讨论】:

    • 比其他答案容易得多。
    • 虽然 chrome 显示在标题响应中,但对我不起作用
    【解决方案2】:

    对于 Windows,我强烈推荐 Fiddler,这是一个客户端工具,可以代理您的网络流量并让您检查它。它会告诉你压缩是否打开并正常工作。它对于许多其他客户端 HTTP 相关的调试和诊断任务也很有用。

    【讨论】:

    • 我不认为它充当代理;我以为它利用了 TCP/IP 堆栈并 msdn.microsoft.com/en-us/library/…> 进入了传输。不是吗?
    • 是的,它是一个代理。只要浏览器表现良好并遵循通常的机制来确定要使用的代理,就不需要特殊的挂钩。
    【解决方案3】:

    除了像 Fiddler 这样查看 HTTP 级别的流量外,您还可以使用带有 FirebugYSlow 附加组件的 Firefox。 YSlow 为您提供了很多有用的分析,说明您的页面为何会变慢 - 其中,它为您提供了您的请求下载的各种资产(HTML、CSS、JavaScript、图像和其他媒体等)的大小。您可以比较压缩和不压缩的页面大小 - 如果打开压缩后 HTML 更小,您就知道它正在工作。它还将为您提供空缓存和已准备好的缓存的值,让您查看为新访问者和回访者节省了多少。

    【讨论】:

    • 这里再次为 YSlow 投票。如果您的任何资产未压缩,它会警告您。
    【解决方案4】:

    如果您有 chrome,请按 F12,然后导航到该站点。网站加载后,转到“网络”选项卡。单击您正在查找的文件,然后单击标题下的查找部分响应标题。寻找内容编码部分

    看下图为例

    要查看传输了多少数据,请在网络标签中,将鼠标悬停在大小列上。它显示了完整的文件大小以及通过网络传输的数据的大小。下面是一个例子。查看显示此信息的工具提示

    【讨论】:

    • content-encoding:gzip 只是表明 gzip 正在工作。但是你在哪里看到数据大小和内容大小,这将有助于确定压缩率等?
    • 用这个信息更新了答案
    【解决方案5】:

    您可以使用本网站: http://whatsmyip.org/mod_gzip_test/

    【讨论】:

      【解决方案6】:

      Wireshark, former Etherial 被证明是对我来说最有价值的工具。
      只需选择一个网络适配器(如果有很多),在过滤器字段中输入“tcp port 80”,然后按 Capture - 一切就绪。

      【讨论】:

        【解决方案7】:

        最简单、最快捷的方法是查看开发者工具 Network 选项卡,查看每个选项的 ContentSize 值是否要求不同。如果值不同,则压缩正在工作。 size 除以 content 得到你的压缩率。我不确定这些值可见多长时间,但它们在 Chrome 53 中存在。不确定在 Firefox 上。

        【讨论】:

        • 这是正确的答案。请注意,在最新版本的 chrome 中,上面显示的 Content 字段默认不可见。另外我认为它已重命名为Content-Length。如果它不可见,请右键单击任意位置的列标题,然后从字段列表中选择Response-Headers,然后选择Content-Length 以查看它。
        【解决方案8】:

        对于 Firefox,看看这些插件:

        1. 萤火虫
        2. HttpFox

        两者都可用于监控您进出浏览器的流量(您可以看到每个响应的大小)。我特别喜欢 Httpfox,一个非常棒的插件,我每天都在使用。

        【讨论】:

          【解决方案9】:

          使用Fiddler 监视您的 HTTP 传输。

          “构建请求”(创建一个 HTTP GET)并检查未压缩页面的 HTTP 响应的“Content-Encoding”标头,并检查其“Content-Length”。将这些值与压缩页面的相同值进行比较。

          对于压缩响应,“Content-Encoding”应该类似于“gzip”,并且您的“Content-Length”应该更短。您可以使用两者中的“Content-Length”字段来确定压缩率。

          【讨论】:

            【解决方案10】:

            最简单的方法是使用这个:

            http://www.whatsmyip.org/http-compression-test/

            【讨论】:

            【解决方案11】:

            如果您想使用非常低的技术,您可以远程登录到目标服务器上的 HTTP 端口(80?)并手动输入请求。如果你得到纯文本,那么它不会被压缩,但如果你得到乱码,那么你就会做一些事情。如果您需要查看标头的结构,可以使用 Live HTTP Headers 扩展名之类的东西从 Firefox 中复制它们。

            【讨论】:

            • 我认为这不会起作用,除非您输入正确的压缩头。通常,浏览器首先向服务器发送标头,指示它将接受的压缩类型,然后服务器应该只发送浏览器支持的压缩格式(或其他纯未压缩格式)的内容。
            【解决方案12】:

            在 Chrome 开发者工具中,您可以在 Network 选项卡的列中添加您选择的响应标头(在您的情况下为content-encoding)。

            只需右键单击一个请求,然后单击Header OptionsResponse Headers,然后选择Content-Encoding

            完成此操作后,您将能够在 Network 选项卡中看到 content-encoding,而无需单击任何单独的请求:

            【讨论】:

              【解决方案13】:

              我们搜索了一下。显然,有很多网站可以验证我们的页面是否被压缩。

              【讨论】:

              • 是的,有一些很好的网站可以做到这一点,但它们对 Intranet 服务器或 localhost 开发的帮助不是很大。 :-(
              最近更新 更多