Mike,
Here's an stub fastcgi program in perl:
use CGI::Fast qw(:standard);
### TIME_INTENSIVE_INITIALIZATION: Spend ~ 30 seconds here:
### use BigCode Library; open_db_connection(); cache_some_pages_in_memory();
###
$COUNTER = 0;
EVENT_LOOP: while (new CGI::Fast) {
print header;
print start_html("Fast CGI Rocks");
print
h1("Fast CGI Rocks"),
"Invocation number ",b($COUNTER++),
" PID ",b($$),".",
hr;
print end_html;
}
You'll see from the code above (which is a pretty fcgi standard template across scripting languages - I've done tcl,php and perl) that the app initialization happens _before_ the requests are served. So minservers/prespawning would help because the init time would not be exposed to the user. Believe me I know - this is not a theoretical issue I'm raising.
If fake requests can be scheduled to happen every n minutes or so (like in aolserver/apache/coldfusion), then you could use that to ping your fastcgi process and prevent process culling, effectively giving you minservers. I've had to do that before -- it's works but it's not as elegant as one line in a config file.
Also it leaves IIS 6 and 5 users (who won't have fake requests?) out of luck, if that's the only solution.
Maybe they too will have workarounds, but you can see how that complicates the documentation life of software projects hoping to target IIS?
[aside: PHP has precompilation tools like Zend etc. but I don't know if any do ahead-of-first-request compilation.]