当服务器应用程序实现FastCGI 1.0时,浏览器与服务器通信的方案是怎样的?
答案1
没什么不同。 Web 浏览器向服务器发送 http(s) 请求,服务器返回响应。 对于浏览器来说也没什么不同,实际上浏览器甚至无法知道正在与它通信的是什么:一个简单的 CGI、一个 fastcgi 应用程序或一些完全不同的应用程序(如各种 ruby 或 java 框架)。
CGI 和 FastCGI 的区别不在这里。区别在于,http 服务器如何与 CGI/FastCGI 应用通信。
对于 CGI,Web 服务器会为请求启动一个进程,将请求发送给它,然后将响应发送回浏览器。此后,CGI 进程就完成了,准备就绪。要处理新请求,必须启动一个新进程。
它更容易开发,但对于更复杂的情况来说,它的开销很大。必须为所有请求重新运行整个初始化过程。
在 FastCGI 中,Web 服务器可以向同一个 CGI 脚本提供多个请求。这要求进程和 Web 服务器之间进行更复杂的通信:Web 服务器不仅要能够启动和停止它们,还要向它们解释何时有新请求以及何时有最后一个请求。