CGI 的“过时”特性实际上仅在您正在处理具有大量页面浏览量的大型复杂网站时才会考虑。
许多人认为 CGI 已过时,但并不真正了解 CGI 是什么。有一种普遍的误解认为 CGI 本质上是一种基于 Perl 的技术。许多人攻击 CGI 是为了平息对 Perl 的狂热攻击,以支持他们支持的任何语言。如果您想成为一名真正的技术专家,您需要了解基本问题并根据实际情况做出选择。
CGI 是一个带有网络服务器的接口,它允许您以任何语言编写交互式页面——甚至是 befunge。当服务器收到对由 CGI 脚本控制的页面的请求时,服务器会运行该脚本并将结果返回给请求者。
如果您的编程语言在每次执行时都需要加载 VM、解释器或编译器,那么每次访问您的页面时都需要此启动时间。
FastCGI、mod_php、mod_perl 等 CGI 加速器始终将解释器/VM 保留在内存中,可以保持库加载,甚至缓存脚本中的字节码以减少脚本启动开销。
如果您正在制作一个简单的、个人的或爱好的网站,CGI 就可以了。PHP 也将如此。
如果您的站点需要增长到需要更快的技术,您可以迁移到 mod_perl、FastCGI 或其他 CGI 加速技术。
您使用什么语言应该由它提供的工具以及它们如何满足您的需求来决定。
- 列出你需要的能力。
- 列出破坏交易的清单。
- 现在对照这两个列表检查每个可能的工具集。
- 哪一个出来最好?测试一下。
- 很烂吗?把它从你的清单上划掉,然后回到第 4 步。
另外,我建议不要使用befunge。仅仅因为它是可能的,并不意味着你应该使用它。
更新: 正如 mpeters 所指出的,mod_perl、mod_php、mod_ruby 等不仅仅是 CGI 加速器;它们提供对 Apache API 的访问。它们充当 CGI 加速器,但可以做很多、很多、更多的事情。
FastCGI 是一个纯 CGI 加速器。
更新 2: PHP 和 CGI 不是相互排斥的。 PHP 可以作为 CGI 安装。PHP 经常与 FastCGI 一起使用。