如何确定我的服务器是否正在提供GZipped内容?


160

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

Answers:


229

毫无疑问,一个可能的答案是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

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


3
的确如此,但是可以将gzip配置为压缩某些文件类型,并排除其他文件类型。因此,请确保使用此测试卷曲的文件属于将要压缩的类型。
泰勒·比斯科

5
我建议也使用-L标志curl来遵循所有重定向,例如从非www到www.否则,size_download的结果可能是错误的
vladkras

如果我能在年轻的开发人员身上留下一件事,那就是拥有坚实的Unix基础的重要性。为CURL +1。起初令人困惑,当您知道时可以挽救生命。
阿克伦

105

更新资料

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

在此示例中,lider.jpg确实被压缩了。

在此处输入图片说明

将其与您正在浏览的这个页面进行比较,然后查看一个png文件,您将看不到这样的名称。

在此处输入图片说明

只是要清楚,这不是因为一个是jpg而一个是png。这是因为一个被压缩,而另一个则没有。


上一个答案

在Chrome中,如果您拉起开发人员工具并转到“网络”标签,那么如果没有压缩,它将显示以下内容:

在此处输入图片说明

如果存在压缩,则显示以下内容:

在此处输入图片说明

换句话说,相同的数字(顶部和底部)表示无压缩。


3
检查响应头可能更好。此方法没有说明是否开始使用gzip压缩或其他某种压缩算法。
塞缪尔

4
在“网络”标签上的Chrome开发者工具中,单击请求的资产名称/链接,然后您可以像这样检查响应标题并查看gzipContent-Encoding键![截屏] [1] [1]:i.stack .imgur.com / Bpb5W.png(http://content.screencast.com/users/...
D48

1
最新的chrome版本(版本44.0.2403.130 m)似乎没有显示尺寸/内容详细信息-我的意思是gzip详细信息-i.imgur.com/MTz7DCM.png。有人知道原因吗?
安迪·杜弗雷斯

33

请参阅响应标题。在FireFox中,您可以检查Firebug。

Content-Encoding    gzip

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


9
仅当您的客户端发送了“ Accept-Encoding:gzip,deflate”时,您才能收到此消息
Maciej Swic

2
硬刷新以查看原始文件的编码,因为当文件以状态304进行提供时,似乎已解压缩了缓存的版本!(就我而言,我看到的是ETag标头,而不是内容编码)
ptim

11

在新版本的chrome中,开发者工具>网络,您可以右键单击列名称,然后选择内容编码选项并添加该列(图片中的黑框)。

如果您想查看该gzip内容的大小(如@Outfast Source),则可以单击“视图”旁边的图标(在图像中显示为绿色框)。

这样您就可以查看启用了gzip的内容。

在此处输入图片说明


这是一个很好的答案,但是<kbd> Content-Encoding </ kbd>已移至<kbd> Response Headers </ kbd>下。
Dan Dascalescu


8

我根据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/
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.