8

主要的 Web 框架(例如 Django、Pyramid、Rails 等)通常作为持久性服务器运行,并使用单独的 Web 服务器(如 nginx)作为前端。Web 服务器通过 FastCGI 或 SCGI 等协议进行连接:

browser --[http]--> nginx --[fastcgi]--> flup -> django

这对我来说似乎很复杂。当后端可以运行自己的 HTTP 服务器时,为什么请求会转换为完全不同的协议?

browser --[http]--> nginx --[http]--> wsgiref -> django

这种方法似乎更简单也更灵活,因为只有一个传输协议,而且它是一个 RFC。

但是,我认为我从未见过Web 框架鼓励仅使用 http 的设计,所以我认为这一定是有原因的。

在这里使用像 FastCGI/SCGI 这样的协议有什么好处?

4

1 回答 1

8

HTTP 是一个庞大而复杂的协议。将接口缩减为 FastCGI 或 WSGI 提供的功能允许框架比处理原始请求更快地处理请求。

于 2012-01-19T06:16:10.297 回答