如何使用apache2和mod_proxy_fcgi禁用缓冲?
我用杰西的应用程序在ADEache 2.4上使用MyPro XyXyFCGI,C++应用程序使用LIbfcGIP.Serv.P/P> 我的问题是,apache仍然在缓冲我的响应数据。我使用wireshark确认libfcgipp库没有对其进行缓冲:通过如何使用apache2和mod_proxy_fcgi禁用缓冲?,apache,buffer,mod-proxy,fastcgi,apache2.4,Apache,Buffer,Mod Proxy,Fastcgi,Apache2.4,我用杰西的应用程序在ADEache 2.4上使用MyPro XyXyFCGI,C++应用程序使用LIbfcGIP.Serv.P/P> 我的问题是,apache仍然在缓冲我的响应数据。我使用wireshark确认libfcgipp库没有对其进行缓冲:通过spawn fcgi启动fcgi应用程序后,数据会尽快发送到apache web服务器。但是在我的浏览器(我用来测试,稍后会有一个C++客户端),它只在我“杀死”/关闭服务器应用程序中的发送请求后出现。 所以我假设我需要禁用apache或mod_p
spawn fcgi
启动fcgi应用程序后,数据会尽快发送到apache web服务器。但是在我的浏览器(我用来测试,稍后会有一个C++客户端),它只在我“杀死”/关闭服务器应用程序中的发送请求后出现。
所以我假设我需要禁用apache或mod_proxy_fcgi(或两者)的缓冲。但是我找不到关于如何做到这一点的适当文档。一些注释,因为我刚刚花了几个小时的时间尝试找到这个问题的答案:
mod_proxy
/mod_proxy\u fcgi
时,不可能完全禁用输出缓冲,但是,您仍然可以将响应流成块mod_fastcgi
或mod_fcgi
模块禁用输出缓冲,但这些mod在Apache2.4中并不流行/广泛使用mod_deflate
,并且没有为虚拟主机/目录/etc设置SetEnv no gzip 1
。这是流式数据,那么gzip将不允许缓冲区刷新,直到请求完成flushpackets
和flushwait
的支持。如果您使用的是Apache 2.4.31或更高版本,则可以使用
禁用缓冲,如中所述:
#注意:唯一不同的部分是/path/to/app.sock
SetHandler“代理:unix:/path/to/app.sock|fcgi://localhost/"
#定义匹配的辅助对象。
#与SetHandler匹配的部分是
#跟着管道走。如果需要区分,“localhost;可以
#有什么独特的吗。
注意:
flushpackets
和flushwait
目前只包括在中,因为还没有被后端口到2.4.x分支。您有mod_缓存
模块吗?它只在mods可用
中,但在mods启用
中没有,所以我猜它没有启用。我用错了这里的术语。我的意思是“缓冲”,而不是“缓存”。您尝试过和指令吗?我应该如何使用它们?零表示系统默认值,所以我不能通过这些禁用缓冲,可以吗?一种解决方法是用“\n”右键填充您对4096的SSE响应