何时需要 CGI/FastCGI,何时不需要

Posted

技术标签:

【中文标题】何时需要 CGI/FastCGI,何时不需要【英文标题】:When is CGI/FastCGI required and when it is not 【发布时间】:2015-05-14 11:53:48 【问题描述】:

这可能是一个小菜鸟问题,但我已经阅读了足够多的关于 CGI/FastCGI/WSGI 的内容,但仍然没有完全理解,所以我决定问它。

首先,我想说说我所理解的。我了解 CGI 是 Web 服务器(例如 Apache 或 nginx)和 Web 服务器应用程序(例如 Python 应用程序)之间的接口程序。另外,我了解到,您可以简单地通过配置 Web 服务器来提供静态文件 (html)。为此,您不需要 CGI/WSGI。当您想要提供动态内容时,您需要 CGI 或类似的东西,而不仅仅是某个位置的一个文件。通过服务,我的意思是由另一个程序生成 html,然后将其提供给 Web 服务器程序

然后我不明白的事情。为什么 angularJS 不需要 CGI 或类似的?是因为如果部署到例如 Nginx,angularJS 应用程序可以通过提供 index.html 文件直接提供服务?不知何故,AngularJS 在那之后(几乎)处理了所有事情?但是如果你有一个基于 Django 的 Web 应用程序,那么你确实需要一个 WSGI,它实际上是捆绑在 Django 中的,所以你不需要修改它?

【问题讨论】:

【参考方案1】:

我不能说任何关于 Django 的有用信息,但 Angular 只是存在于客户端 Web 浏览器中。它不需要在服务器上做任何事情,所有程序代码都在客户端上运行的 javascript 中处理。所以基本上你的网络服务器所要做的就是提供一堆静态文件(html部分模板、javascript文件、css等),其余的由Angular负责。

当然,一旦你开始通过 Angular 从服务器获取动态数据,这种情况可能会改变,但原则上你已经可以使用静态 json 文件做很多事情,例如 canonical angular phonecat 教程所示。

【讨论】:

以上是关于何时需要 CGI/FastCGI,何时不需要的主要内容,如果未能解决你的问题,请参考以下文章

javascript中何时要用引号,何时不需要用引号,引号起啥作用?

何时用padding何时用margin

为啥以及何时需要提供我自己的删除器?

为啥以及何时需要在 MongoDB 中重建索引?

何时明确排除乐观锁定(休眠)?

应用程序管理的 JPA,何时需要事务