这更多是为了理解 web 应用程序中的请求-响应机制。客户端向 Web 应用程序发送请求 (GET / POST)。Web 应用程序有一个正在运行的应用程序服务器,该服务器用作应用程序特定程序的容器。我不明白应用服务器启动 FastCGI / CGI 进程时的部分。CGI的意义是什么?服务器不是设计来处理完整的请求处理机制吗?请求处理的哪一部分依赖于 CGI?
2 回答
我在这里问了一个类似的(尽管它更接近于实现而不是概念)问题: HTTP request dispatch from Web Server to a CGI/FastCGI process
然而,这是我在学习过程中学到的:CGI 是一组“标准”,它定义了 HTTP/Web 服务器应该如何与外部程序通信。注意标准这个词!虽然不是一个彻头彻尾的协议(如 HTTP、TCP 等),但它是一个非常接近的协议,因为大多数生成 HTML 的外部程序(Ruby、PHP、Python 等)都遵守一组标准。
您可以在此处阅读有关 CGI 的更多信息:http: //hoohoo.ncsa.illinois.edu/cgi/intro.html
FastCGI 是对 CGI 进程处理方式的改进 - 以一种超级简单的方式,FastCGI 进程在内存中保持加载更长时间,以便它可以在加载到内存时处理多个请求。显然,这更有效,因为加载基本 CGI 环境所损失的时间和资源在 FastCGI 进程中从未如此频繁地发生
有点偏离轨道和 Rails 特定,但这是一篇有趣的文章:http: //izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/