CGI, Common Gateway Interface, is a language-independent standard that determines how web servers can generate web pages. It is commonly used for dynamic websites and can be employed using numerous scripting languages.
FastCGI, as explained by the project’s website, is CGI with a only a few extensions. It is being promoted as an open standard, making modules for various webservers (Apache HTTP Server, Microsoft IIS, Lighttpd, Ngnix, and others) freely available. Like CGI, it is not tied to the internal architecture of a web server and runs separate from the web server processes.
The advantages of FastCGI over CGI are twofold:
1. Distributed computing, allowing system administrators to run their web applications on separate machines from the web server.
2. Multiple and extensible roles, which means that FastCGI cannot only process HTTP requests, but can also do many other things, such as modular authentication. Furthermore, the extensibility means that developers can easily add more roles in the future.
FastCGI is designed to reduce the amount of strain on a web server, making it easier to respond to multiple simultaneous requests. The list of web servers that implement FastCGI continues to grow, as it is an open protocol, with specifications available freely over the web.