Nginx 如何判断我的服务器是否提供gzip内容?

Nginx 如何判断我的服务器是否提供gzip内容?,nginx,compression,gzip,Nginx,Compression,Gzip,我在NGinx服务器上有一个webapp。我在conf文件中将gzip设置为,现在我正在尝试查看它是否有效。YSlow说不是,但6个做测试的网站中有5个说是。我如何才能得到一个明确的答案,为什么结果会有差异?毫不奇怪,一个可能的答案是: 在第二种情况下,客户机告诉服务器它支持内容编码,您可以看到响应确实较短,经过压缩。请参见响应标题。在FireFox中,您可以使用Firebug进行检查 Content-Encoding gzip 如果服务器支持gzip内容,则应显示此内容。您可以快速使用

我在NGinx服务器上有一个webapp。我在conf文件中将
gzip设置为
,现在我正在尝试查看它是否有效。YSlow说不是,但6个做测试的网站中有5个说是。我如何才能得到一个明确的答案,为什么结果会有差异?

毫不奇怪,一个可能的答案是:


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

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

Content-Encoding    gzip

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

您可以快速使用以下web服务:


Google Chrome在开发者工具中的“审计”工具也很方便。

更新

Chrome改变了它的报告方式(如果感兴趣,请参阅原始答案)。您可以使用开发人员工具(F12)进行判断。转到“网络”选项卡,选择要检查的文件,然后查看右侧的“标题”选项卡。如果您是gzip,那么您将在内容编码中看到这一点

在本例中,slider.jpg确实是gzip

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

要明确的是,这并不是因为一个是jpg,一个是png。这是因为一个是gzip,另一个不是


先前的答案

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

如果存在压缩,则执行以下操作:


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

我根据zoul的答案写了这个脚本:

#!/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/

在新版chrome中,开发者工具>网络,你们可以右键点击列名,选择内容编码选项并添加该列(图片中的黑框)

如果您想查看gzip内容的大小,如@outhast Source,那么可以单击视图旁边的图标(在图像中显示为绿色框)

因此,您可以看到哪些内容启用了gzip


只有当客户端发送“Accept Encoding:gzip,deflate”硬刷新以查看原始文件的编码时,才会收到此消息,因为当文件的状态为304时,缓存版本似乎已解压缩!(在我的例子中,我看到的是ETag头而不是内容编码)这是正确的,但gzip可以配置为压缩某些文件类型,并排除其他文件类型。因此,请确保您使用此测试卷曲的文件属于将被压缩的类型。我建议也使用
-L
标记
curl
来跟踪所有重定向,例如从非www到
www。
否则,如果我能在我的年轻开发人员身上留下深刻印象,下载的大小结果可能是错误的,它有一个坚实的UNIX基金会的重要性。1表示卷曲。一开始它让人困惑,当你知道它时,它是一个救命稻草。检查响应头可能更好。此方法没有说明是否开始使用gzip压缩或其他压缩算法。在网络选项卡上的Chrome Developer Tools中,单击请求的资产名称/链接,您可以像这样检查响应头,并查看内容编码键的
gzip
![截图][1][1]:最新的chrome版本(44.0.2403.130 m版)似乎没有显示大小/内容的详细信息——我指的是gzip的详细信息。有人知道原因吗?这是一个很好的答案,但是内容编码已经移到了响应标题下。
$ ./script.sh https://example.com/