【问题标题】:How can I tell if my server is serving GZipped content?如何判断我的服务器是否在提供 GZipped 内容?
【发布时间】:2012-02-26 18:01:56
【问题描述】:

我在 NGinx 服务器上有一个 webapp。我在 conf 文件中设置了gzip on,现在我正在尝试查看它是否有效。 YSlow 表示不是,但在 6 个进行测试的网站中有 5 个表示它是。我怎样才能得到一个明确的答案,为什么结果会有所不同?

【问题讨论】:

    标签: nginx compression gzip


    【解决方案1】:

    更新

    Chrome 改变了它的报告方式(如果有兴趣,请参阅原始答案)。您可以使用开发人员工具 (F12) 来判断。转到“网络”选项卡,选择要检查的文件,然后查看右侧的“标题”选项卡。如果你是 gzip 压缩的,那么你会在 Content-Encoding 中看到。

    在这个例子中,slider.jpg 确实被压缩了。

    将其与您所在的页面进行比较并查看 png 文件,您将看不到这样的名称。

    为了清楚起见,这并不是因为一个是 jpg 而一个是 png。这是因为一个是 gzip 压缩的,另一个没有。


    上一个答案

    在 Chrome 中,如果你打开开发者工具并转到网络选项卡,那么如果没有压缩,它将显示以下内容:

    如果有压缩,则如下:

    换句话说,相同的数字,顶部和底部,意味着没有压缩。

    【讨论】:

    • 检查响应标头可能会更好。此方法没有说明是开始使用 gzip 压缩还是其他一些压缩算法。
    • 在 Chrome 开发者工具的网络选项卡上,点击请求的资产名称/链接,您可以像这样检查响应标头,并查看 gzip 的内容编码键![屏幕截图][1] [1]:i.stack.imgur.com/Bpb5W.png(http://content.screencast.com/users/…
    • 最近的 chrome 版本(版本 44.0.2403.130 m)似乎没有显示大小/内容细节 - 我的意思是 gzip 细节 - i.imgur.com/MTz7DCM.png。有谁知道原因吗?
    【解决方案2】:

    在新版chrome中,开发者工具>网络,你可以右击Column name,选择content-encoding选项并添加该列(图片中的黑框)。

    如果您想查看 gzip 内容的大小,例如 @Outfast Source - 您可以点击查看旁边的图标(在图像中显示为绿色框)。

    这样您就可以看到哪些内容启用了 gzip。

    【讨论】:

    • 这是一个很好的答案,但 Content-Encoding 已移至 Response Headers 下。
    【解决方案3】:

    我根据祖尔的回答写了这个脚本:

    #!/bin/bash
    
    URL=$1
    PLAIN="$(curl $URL --silent --write-out "%{size_download}\n" --output /dev/null)"
    GZIPPED="$(curl $URL --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null)"
    
    if test $PLAIN -gt $GZIPPED
    then echo "supported"
    else echo "unsupported"
    fi
    

    示例:

    $ ./script.sh https://example.com/
    

    【讨论】:

      【解决方案4】:

      请参阅响应标头。在 FireFox 中,您可以使用 Firebug 进行检查。

      Content-Encoding    gzip
      

      如果服务器支持 gzip 内容,则应显示该内容。

      【讨论】:

      • 只有当您的客户端发送“Accept-Encoding: gzip,deflate”时您才会收到此信息
      • 硬刷新看到原始文件的编码,当文件以状态304提供时,似乎缓存的版本已经解压缩了! (就我而言,我看到的是 ETag 标头而不是 Content-Encoding)
      【解决方案5】:

      您可以快速使用网络服务,例如:http://www.whatsmyip.org/http-compression-test/

      Google Chrome 的开发者工具中的“审核”工具也派上用场了。

      【讨论】:

        【解决方案6】:

        不出所料,一个可能的答案是curl

        $ curl http://example.com/ --silent --write-out "%{size_download}\n" --output /dev/null
        31032
        $ curl http://example.com/ --silent -H "Accept-Encoding: gzip,deflate" --write-out "%{size_download}\n" --output /dev/null
        2553
        

        在第二种情况下,客户端告诉服务器它支持内容编码,您可以看到响应确实更短,压缩​​了。

        【讨论】:

        • 这是真的,但 gzip 可以配置为压缩某些文件类型,而排除其他文件类型。因此,请确保您使用此测试卷曲的文件属于将被压缩的类型。
        • 我建议也使用-L 标志curl 来跟踪所有重定向,例如从非 www 到 www. 否则 size_download 的结果可能是错误的
        • 如果我能给年轻的开发者留下深刻印象,那就是拥有坚实的 unix 基础非常重要。 +1 卷曲。起初它令人困惑,当你知道它时,它是一个救生员。
        猜你喜欢
        • 1970-01-01
        • 2010-10-19
        • 2012-06-05
        • 1970-01-01
        • 1970-01-01
        • 2015-04-15
        • 1970-01-01
        • 2010-12-24
        • 2013-09-14
        相关资源
        最近更新 更多