
1 ryd994 2015-01-27 16:07:22 +08:00 via Android Content-Encoding: gzip 这不就是压缩过了么!curl自动帮你解了而已 |
2 bombshell OP @ryd994 我用wget带Accept-Encoding头下下来的是文本格式,不是压缩包,照理说不应该是压缩包吗?我试过其他网站的下下来是压缩包。 |
3 ryd994 2015-01-27 16:25:14 +08:00 via Android 其他网站上的content-type是什么?后缀是什么? |
4 BOYPT 2015-01-27 16:27:06 +08:00 你程序里面不要输出Content-Encoding: gzip 由nginx来处理。 curl -v --compressed http:/xxxxxx > /dev/null 这样只要你看到有Content-Encoding: gzip,说明就是压缩的。 |
5 bombshell OP @ryd994 比如https://api.github.com/events返回的是Content-Type: application/json; charset= |
6 bombshell OP @BOYPT 我删掉web.header("Content-Encoding", "gzip")后是输出Content-Encoding: gzip没错,但是wget下来的依然是文本格式而且大小也没有压缩过,size有大于1k。 |
7 bombshell OP @BOYPT 比如wget --header="Accept-Encoding:gzip" https://api.github.com/events和wget https://api.github.com/events结果一个是文本,一个是压缩包。 |
8 ryd994 2015-01-27 17:05:12 +08:00 via Android 不能啊,按照HTTP协议规范,设置了content-encoding就肯定得有相应的处理啊。 |
9 ryd994 2015-01-27 17:12:46 +08:00 via Android 你用html文件试试看,如果html没问题的话,那就是gzip_types的问题 http://nginx.org/en/docs/http/ngx_http_gzip_module.html#gzip_types 你给个测试链接我看看,记得限制请求频率免得被人DOS了 |
10 ryd994 2015-01-27 17:14:12 +08:00 via Android 等等,你是app里设定的gzip的header? 不需要啊,nginx如果压缩了会自己设置的,不要在app里设 |
11 clino 2015-01-27 17:23:57 +08:00 建议用wireshark抓包诊断比较快 |
14 bombshell OP @BOYPT 不科学啊,没有压缩效果阿,照理说我加了accept-encodingwget不会解压阿 |
15 ryd994 2015-01-27 18:16:22 +08:00 |
17 ryd994 2015-01-27 19:21:10 +08:00 via Android 你用个本地文件先试试 |
18 bombshell OP @ryd994 我用curl -H "Accept-Encoding:gzip"得到的是gzip格式的了,然后再gunzip后正常,看来是wget自动解压缩了,坑爹,我要仔细研究下wget。感谢相助。 |
20 zhicheng 2015-01-27 21:00:17 +08:00 @ryd994 你需要再仔细的读一遍 RFC 了。 gzip 并不是强制的,如果 client 不设置可以接收 gzip ,那么正常的 server 是不会发送 gzip 编码过的 body ,这是内容协商的一部分。 |
23 zhicheng 2015-01-28 00:46:53 +08:00 @ryd994 要不怎么叫内容协商呢? 服务器端有,但是客户端没有发送支持 gzip 的 Accept-encoding ,服务器是不会压缩的。当然可以让服务器强制 gzip 压缩,只是默认服务器不会这样,违反 RFC 。 另外那个 Content-Encoding 的头,是自己设置的。不是 Nginx 设置的。。。。 |
24 bombshell OP @zhicheng @ryd994 最终结果是这样 有自己设置的web.header("Content-Encoding", "gzip")后curl -I输出 HTTP/1.1 200 OK Server: nginx Date: Wed, 28 Jan 2015 01:13:13 GMT Content-Type: application/json Connection: keep-alive Content-Encoding: gzip wget --header="accept-encoidng:gzip"返回文本格式 ------------------------------------------------------------------------------------------------------------------------ 去掉自己设置的web.header("Content-Encoding", "gzip")后curl -I输出: HTTP/1.1 200 OK Server: nginx Date: Wed, 28 Jan 2015 01:08:13 GMT Content-Type: application/json Connection: keep-alive Vary: Accept-Encoding wget --header="accept-encoidng:gzip"返回gzip格式 |
25 sampeng 2015-01-28 13:58:19 +08:00 gzip_min_length 1k; 1k=1024个字节。你得json多大到1k啊。。 补充一下,1k你就压缩,效率和压缩比反而低。 json不需要gzip。除非上百k的。其他反而增加负担 |
26 wuljy 2015-01-29 12:04:06 +08:00 1. 自己不要随意加头 2. 小文件不要随意zip 3. 大文件不要用json |