为什么将Web应用程序实现为FastCGI而不是新的Web服务器?

and*_*ieb 17 fastcgi

我了解FastCGI在性能方面优于其他网关接口的目的.但是,如果实现FastCGI的库已经经历了实施安全高效的TCP服务的艰苦措施,为什么不将应用程序编写为Web服务器呢?前端Web服务器实现反向代理的效率低于FCGI的效率吗?或者FCGI的规范比HTTP的规范简单得多?

小智 5

我有一个用FCGI程序替换的Web服务器程序。我这样做的部分原因是由于该程序的要求。它需要在现有的Web服务器下运行,因为这样做不需要任何其他配置。

另一个要求是,它必须能够跟踪一些经常更改的状态值。现有的程序效率不高,它在外部跟踪这些状态值并为每个请求重新加载它们。FCGI程序的一个优点是它是持久性的,因此它可以轮询那些状态值,并且这些状态值将可用并为每个请求准备就绪。

我不需要实施任何FCGI规范,我只使用了现有的FCGI库,它为我处理了与Web服务器的所有通信。与我编写的其他具有嵌入式Web服务器的应用程序相比,使用FCGI库实现一个相对简单。

FCGI的另一个优点是FCGI应用程序实际上不需要驻留在Web服务器可访问的磁盘上。您可以配置服务器以建立与另一台服务器上FCGI应用程序实例的TCP连接。如果您无法直接访问Web服务器,则此功能非常有用。用其他方法完成同一件事可能很麻烦,但是FCGI应用程序甚至不需要修改。只需配置服务器,在FCGI主机下启动您的应用程序,一切就好了。

FCGI的另一个优点是,您可以将Web服务器配置为在预设数量的应用程序实例之间分配请求。如果您的Web应用程序通过同步处理每个请求来最好地工作,则FCGI是理想的,因为您可以将每个请求集中到一个实例中,并且该实例可以在单个循环中处理每个请求。如果最多只需要2、3或n个实例,则只需更改服务器上的值即可完成。

因此,FCGI并非在每种情况下都是最好的。现在是您面对FCGI最有吸引力的非同寻常要求的时候了。