我很想阻止 nginx 压缩单个 PHP 请求。我已经有以下内容:
@ini_set('zlib.output_compression', 'Off');
@ini_set('implicit_flush', 1);
header('X-Accel-Buffering: no');
根据我所发现的一切,单独使用 X-Accel-Buffering
应该禁用 gzip,但是当我从浏览器加载此页面时,我仍然可以看到标题:
Content-Encoding:gzip
我正在使用 php7-fpm、nginx 1.10.1、debian8
编辑:
我用 sleep() 做了一个延迟输出的测试。它看起来像 header('X-Accel-Buffering: no');
正在工作,但它只阻止缓冲而不是 gzipping。我猜 gzipping 以某种方式作为流工作。
我可以看到,如果我输出 1,000 个字节,循环遍历每个 1 个字符的 echo 语句,浏览器会收到大约 11kb。如果我回显 str_rep x 1000,那么发送的数据就会少得多。那里一定有一些开销。
无论如何,我需要禁用 gzip 以便发送大量内容并测量下载时间。如果压缩,我不知道实际吞吐量是多少。
最佳答案
如果在答案中找到 Content-Encoding
header ,Nginx 将不会运行 gzip 过滤器。因此,您可以在后端设置 Content-Encoding: identity
header ,nginx 将在不进行 gzip 处理的情况下将其传递给客户端。 identity
表示“未编码”。
关于php - 如何从 PHP 禁用 nginx gzip?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41086260/