我怎么知道我的服务器是否提供GZip内容?
我在NGinx服务器上有一个web应用程序。 我在conf文件中设置了gzip on
,现在我正在尝试查看它是否可用。 YSlow说这不是,但是6个网站中有5个说这是testing。 我怎样才能得到一个明确的答案,为什么有结果的差异?
看起来像一个可能的答案,毫不奇怪, 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
在第二种情况下,客户端告诉服务器它支持内容编码,你可以看到响应确实更短,压缩。
更新
Chrome改变了它报道的方式(如果感兴趣,请参阅原始答案)。 您可以使用开发人员工具(F12)进行分析。 转到“networking”选项卡,select要检查的文件,然后查看右侧的“标题”选项卡。 如果你被压缩,那么你将在Content-Encoding中看到。
在这个例子中,slider.jpg的确被压缩了。
将它与你正在浏览的页面进行比较,然后查看一个PNG文件,你将看不到这样的名称。
只是要清楚,不是因为一个是jpg,一个是png。 这是因为一个是gzipped而另一个不是。
以前的答案
在Chrome中,如果您拉起开发工具并转到networking选项卡,则在没有压缩的情况下将显示以下内容:
而下面如果有压缩:
换句话说,相同的数字,顶部和底部,意味着没有压缩。
请参阅响应标题。 在FireFox中,你可以检查Firebug。
Content-Encoding gzip
如果服务器支持gzip内容,那么应该显示这个。
您可以快速使用Web服务,如: http : //www.whatsmyip.org/http-compression-test/
Google 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中,开发者工具>networking,你可以右击列名,select内容编码选项并添加该列(图像中的黑色框)。
如果要查看gzip内容的大小(比如@Outfast Source),则可以单击视图旁边的图标(在图像中显示为绿色框)。
所以你可以看到哪些内容是gzip启用。
另一个有用的工具: http : //gzipwtf.com
这是我见过的将parsing你的页面,并find所有直接引用的资源(CSS,JS文件等),并告诉你,如果他们每个人都gzipped,而不是只是告诉你,如果索引页面被压缩的唯一工具。
还提供其他有用的统计资料(时间下载资源,速度等)
上面的在线工具都不能testing我的URL,它是一个XML文件,但是这个工作正确: