【发布时间】:2012-02-26 18:01:56
【问题描述】:
我在 NGinx 服务器上有一个 webapp。我在 conf 文件中设置了gzip on,现在我正在尝试查看它是否有效。 YSlow 表示不是,但在 6 个进行测试的网站中有 5 个表示它是。我怎样才能得到一个明确的答案,为什么结果会有所不同?
【问题讨论】:
标签: nginx compression gzip
我在 NGinx 服务器上有一个 webapp。我在 conf 文件中设置了gzip on,现在我正在尝试查看它是否有效。 YSlow 表示不是,但在 6 个进行测试的网站中有 5 个表示它是。我怎样才能得到一个明确的答案,为什么结果会有所不同?
【问题讨论】:
标签: nginx compression gzip
更新
Chrome 改变了它的报告方式(如果有兴趣,请参阅原始答案)。您可以使用开发人员工具 (F12) 来判断。转到“网络”选项卡,选择要检查的文件,然后查看右侧的“标题”选项卡。如果你是 gzip 压缩的,那么你会在 Content-Encoding 中看到。
在这个例子中,slider.jpg 确实被压缩了。
将其与您所在的页面进行比较并查看 png 文件,您将看不到这样的名称。
为了清楚起见,这并不是因为一个是 jpg 而一个是 png。这是因为一个是 gzip 压缩的,另一个没有。
上一个答案
在 Chrome 中,如果你打开开发者工具并转到网络选项卡,那么如果没有压缩,它将显示以下内容:
如果有压缩,则如下:
换句话说,相同的数字,顶部和底部,意味着没有压缩。
【讨论】:
gzip 的内容编码键![屏幕截图][1] [1]:i.stack.imgur.com/Bpb5W.png(http://content.screencast.com/users/…
我根据祖尔的回答写了这个脚本:
#!/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/
【讨论】:
请参阅响应标头。在 FireFox 中,您可以使用 Firebug 进行检查。
Content-Encoding gzip
如果服务器支持 gzip 内容,则应显示该内容。
【讨论】:
您可以快速使用网络服务,例如:http://www.whatsmyip.org/http-compression-test/
Google Chrome 的开发者工具中的“审核”工具也派上用场了。
【讨论】:
不出所料,一个可能的答案是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
在第二种情况下,客户端告诉服务器它支持内容编码,您可以看到响应确实更短,压缩了。
【讨论】:
-L 标志curl 来跟踪所有重定向,例如从非 www 到 www. 否则 size_download 的结果可能是错误的