原理一样,都是通过多进程模式处理多请求。不同之处在于 FastCGI 的一个进程处理完一个请求之后重置状态并挂起,待下一个请求来时继续处理;而 CGI 的一个进程则处理完一个请求后退出,下一个请求来时再创建新进程。
Linux 下创建进程开销非常小,在创建进程问题上二者差别可以忽略。关键是不少基于 CGI 应用服务在进程创建之后初始化是需要开销的(比如 PHP-CGI),这时 FastCGI 能更有效利用资源。
原理上来说,可以把二者看成一致,FastCGI 的工作原理和 CGI 并无区别,都是利用标准输入输出流处理 HTTP 之类的文本协议。