前言:
一如既往地,IIS支持通过提供pluggable module来提供对第3方script的支持,例如php等。在IIS7中,对于CGI的支持有了一个新的变化,就是同时提供了2种CGI支持模块,分别为:CGIModule (cgi.dll)和FastCGIModule (iisfcgi.dll)。关于ISAPI和CGI之间的区别,请参阅http://www.cnblogs.com/Winston/archive/2008/08/05/1260670.html。
那么 CGI和FastCGI之间的区别是什么呢?
正文:
对于CGI和FastCGI之简单的区别,简单可以描述为:
1 在CGI模式下,对于每一个request,都会创建一个新的cgi application process来process该request.
2 在FastCGI模式下,cgi application process可以重复利用。也就是说,如果第一个请求到达server时,会创建相应的CGI application process,如cgi-php.exe (如果是php请求的话)。而接下来的请求都会被该cgi-php.exe来process,而不会创建新的cgi-php.exe,从而节省了昂贵的服务端资源。这种模式有点借鉴了isapi的优点 。
当然,实际情况是,为了提高系统并发能发,缺省情况下,最多会创建4个CGI application process (有点类似于IIS6及以上的web garden哦:))