我有一个小型的Web应用程序,它运行在共享的Apache主机上,并使用FastCGI(mod_fcgi)和服务器发送的事件(SSE)。
为了制作SSE,我们需要为服务器上的虚拟主机设置FcgidOutputBufferSize=0
。因为SSE协议需要立即发送所有事件,而不进行缓冲。
但是在将服务器升级到Apache v2.4.27并将协议升级到HTTP / 2.0之后,SSE流停止正常发送,但是在它们之间存在大量暂停的大块中,直到收集到足够大的事件以使其足够大封装
似乎切换到HTTP / 2.0会激活某种延迟流的缓冲。
如果我强制我的浏览器只使用HTTP / 1.1,那么一切都和以前一样。
主机提供商声称他无法解决此问题,因为它需要切换回HTTP / 1.1并且他不愿意这样做。
那么,SSE和HTTP / 2.0之间是否存在一些基本的不兼容性,或者有一些设置可以更改以使其正常工作?
或者应用程序可以发送一些标头以强制Apache不缓冲? (例如,nginx需要x-accel-buffering: no
才能正常使用SSE)。