8

主要な Web フレームワーク (Django、Pyramid、Rails など) は、フロントエンドとして機能する nginx などの別の Web サーバーを使用して、永続的なサーバーとして実行されることがよくあります。Web サーバーは、FastCGI や SCGI などのプロトコルを介して接続します。

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

これは複雑に思えます。バックエンドが独自の HTTP サーバーを実行できるのに、なぜリクエストがまったく異なるプロトコルに変換されるのでしょうか?

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

このアプローチは、トランスポート プロトコルが 1 つしかなく、それが RFC であるため、より単純で柔軟性があるように見えます。

ただし、Web フレームワークが http のみの設計を奨励しているのを見たことがないと思うので、それには理由があるに違いないと思います。

ここで FastCGI/SCGI のようなプロトコルを使用する利点は何ですか?

4

1 に答える 1

8

HTTP は大規模で複雑なプロトコルです。インターフェイスを FastCGI または WSGI によって提供される機能に切り詰めることで、フレームワークは、オリジナルを処理する必要がある場合よりも高速に要求を処理できます。

于 2012-01-19T06:16:10.297 に答える