环境 nginx + php-fpm
curl -v -i -h accept-encoding: gzip,deflate http://www.ihezhu.com/
* about to connect() to www.ihezhu.com port 80 (#0)* trying 210.51.54.180... connected> head / http/1.1> user-agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 openssl/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3> host: www.ihezhu.com> accept: */*> accept-encoding: gzip,deflate> 但直接浏览器却没有看到输出content-encoding 大概怎么回事?
谢谢
====update
原因暂时还不明, 说下我做的测试
用fiddler访问, 不输出
用fiddler按照curl构造参数, 不输出
用chrome插件模拟curl请求, 不输出
在本机模拟了服务器配置一致的环境(php.ini, fastcgi, nginx.conf以及站点配置), 可以输出
现在准备在curl中模拟browser的请求, 看看怎样
回复内容: 环境 nginx + php-fpm
curl -v -i -h accept-encoding: gzip,deflate http://www.ihezhu.com/
* about to connect() to www.ihezhu.com port 80 (#0)* trying 210.51.54.180... connected> head / http/1.1> user-agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 openssl/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3> host: www.ihezhu.com> accept: */*> accept-encoding: gzip,deflate> 但直接浏览器却没有看到输出content-encoding 大概怎么回事?
谢谢
====update
原因暂时还不明, 说下我做的测试
用fiddler访问, 不输出
用fiddler按照curl构造参数, 不输出
用chrome插件模拟curl请求, 不输出
在本机模拟了服务器配置一致的环境(php.ini, fastcgi, nginx.conf以及站点配置), 可以输出
现在准备在curl中模拟browser的请求, 看看怎样
建议你用wireshark抓包看看,可能只是chrome没显示这个出来。
感觉chrome的开发者工具不那么靠谱,比如显示出了 transfer-encoding: chunked,但是显示出来的却找不是原始的response(不是chunked的格式)。
这个问题很有意思, 我猜是你在curl的时候, request headers提供的不足, 所以没有被cdn cache到.
但是在浏览器的情况下, request headers很完整, 所以cdn就起作用了, 既然cdn服务器节点靠近你自己的网络, 那么就不用压缩了, 直接返回给你明文, 跳过gzip节省浏览器解压时间, 加速网页响应.
我这么猜是因为response header里面有个vary, 查了一下vary的功能和cdn有关