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

时间:2011-11-07 04:16:00

标签: fastcgi

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

1 个答案:

答案 0 :(得分:4)

我有一个Web服务器程序,我用FCGI程序替换。我这样做的部分原因是因为该计划的要求。它需要在现有的Web服务器下运行,因为这样做不需要额外的配置。

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

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

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

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

因此,FCGI并不是最适合各种情况的。在您遇到FCGI最具吸引力的不寻常要求的时候。