为什么Web框架通过FastCGI/SCGI而不是HTTP服务?

Joh*_*kin 7 django fastcgi http scgi

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

browser --[http]--> nginx --[fastcgi]--> flup -> django
Run Code Online (Sandbox Code Playgroud)

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

browser --[http]--> nginx --[http]--> wsgiref -> django
Run Code Online (Sandbox Code Playgroud)

这种方法似乎既简单又灵活,因为只有一种传输协议,它是一种RFC.

但是,我认为我从未见过一个Web框架鼓励纯http设计,所以我认为必须有一个理由.

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

Ign*_*ams 7

HTTP是一种庞大而复杂的协议.将接口削减到FastCGI或WSGI提供的功能允许框架更快地处理请求,而不是处理原始请求.