我打算阻止nginx从gzip压缩单个PHP请求。我已经有以下内容:
@ini_set('zlib.output_compression', 'Off');
@ini_set('implicit_flush', 1);
header('X-Accel-Buffering: no');
Run Code Online (Sandbox Code Playgroud)
根据我发现的所有信息,X-Accel-Buffering仅此一项应禁用gzip,但是当我从浏览器加载此页面时,仍然可以看到标题:
Content-Encoding:gzip
Run Code Online (Sandbox Code Playgroud)
我正在使用php7-fpm,nginx 1.10.1,debian8
编辑:
我使用sleep()进行了测试以延迟输出。看起来像header('X-Accel-Buffering: no');IS 一样,但是它只能防止缓冲而不是gzipping。我猜gzipping正在某种程度上作为流工作。
我可以看到,如果我输出1,000个字节,并在每个回显语句(每个字符有1个字符)上循环,则浏览器将收到大约11kb的字节。如果我回显str_rep x 1000,则发送的数据少得多。那里一定有一些开销。
无论如何,我都需要禁用gzip以便发送大量内容并测量下载时间。如果压缩了,我不知道实际的吞吐量是多少。
如果Content-Encoding在答案中找到标题,Nginx将不会运行gzip过滤器。因此,您可以Content-Encoding: identity在后端设置标头,nginx会将其传递给客户端,而无需进行gzip处理。identity表示“未编码”。