在处理移动客户端时,在HTTP请求的传输期间具有多秒延迟是很常见的.如果您使用prefork Apache提供页面或服务,即使您的应用程序服务器逻辑在5毫秒内完成,子进程也会在几秒钟内为单个移动客户端提供服务.我正在寻找支持以下内容的HTTP服务器,平衡器或代理服务器:
请求到达代理.代理开始在RAM或磁盘中缓冲请求,包括头和POST/PUT主体.代理不会打开与后端服务器的连接.这可能是最重要的部分.
代理服务器在以下情况下停止缓冲请求:
已达到大小限制(例如,4KB),或
请求已完全收到,标题和正文
只有现在,在内存中有(部分)请求,才会向后端打开一个连接,并且中继请求.
后端发回响应.代理服务器再次开始立即缓冲(最大尺寸,比如64KB).
由于代理具有足够大的缓冲区,因此后端响应在几毫秒内完全存储在代理服务器中,并且后端进程/线程可以自由处理更多请求.后端连接立即关闭.
代理以尽可能快或慢的速度将响应发送回移动客户端,而无需连接到后端占用资源.
我相信你可以用Squid做4-6,而nginx似乎支持1-3(在这方面看起来相当独特).我的问题是:是否有任何代理服务器能够理解这些缓冲和非开放连接直到准备好的功能?也许只有一点Apache config-fu使这个缓冲行为变得微不足道?它们中的任何一个都不像Squid这样的恐龙,它支持精益的单进程,异步,基于事件的执行模型吗?
(Siderant:我会使用nginx,但它不支持分块的POST机构,因此无法为移动客户端提供服务.是便宜的50美元手机喜欢分块的POST ...叹息)