这是更深入了解Web应用程序中请求-响应机制的内容。客户端向Web应用程序发送请求(GET / POST)。Web应用程序有一个运行的应用程序服务器,作为应用程序特定程序的容器。当应用程序服务器启动FastCGI / CGI进程时,我不理解其中的部分。CGI的意义是什么?难道服务器不能处理完整的请求处理机制吗?请求处理的哪个部分依赖于CGI?
这是更深入了解Web应用程序中请求-响应机制的内容。客户端向Web应用程序发送请求(GET / POST)。Web应用程序有一个运行的应用程序服务器,作为应用程序特定程序的容器。当应用程序服务器启动FastCGI / CGI进程时,我不理解其中的部分。CGI的意义是什么?难道服务器不能处理完整的请求处理机制吗?请求处理的哪个部分依赖于CGI?
我在这里问了一个类似的问题(尽管更接近于实现而不是概念): 从Web服务器到CGI/FastCGI进程的HTTP请求分发
然而,在这个过程中,我学到了一些东西: CGI是一组“标准”,定义了HTTP/Web服务器与外部程序之间的通信方式。注意这个词“标准”!虽然它不是一个完全的协议(像HTTP、TCP等),但它非常接近一个协议,因为大多数生成HTML的外部程序都遵循这组标准(如Ruby、PHP、Python等)。
你可以在这里阅读更多关于CGI的信息: http://hoohoo.ncsa.illinois.edu/cgi/intro.html
以及这里: http://www.w3.org/CGI/
FastCGI是对处理CGI进程的一种改进 - 简单来说,FastCGI进程会在内存中保持加载更长时间,以便在其加载期间处理多个请求。显然,这样做更有效率,因为在FastCGI进程中很少发生基本的CGI环境加载所浪费的时间和资源。
虽然与题目不完全相关且专注于Rails,但这是一篇有趣的文章: http://izumi.plan99.net/blog/index.php/2007/04/05/saving-memory-in-ruby-on-rails/