1

ページ: http://code.google.com/p/modwsgi/wiki/FileWrapperExtensionで、Graham Dumpleton は次のことを推奨しています。

「ただし、最高のパフォーマンスを得るには、静的ファイルは常に Web サーバーによって提供される必要があることに注意してください。mod_wsgi の場合、これは mod_wsgi または WSGI アプリケーションではなく、Apache 自体によって提供されることを意味します。」

多数の静的ページを事前に構築してから、python プログラム (apache/mod_wsgi 3.3/python3.1 で実行、デーモン モード、django は関与しない) で、各ユーザーに提供するページを決定します。たとえば、python プログラムで、この男には "12345.html" が必要であると判断し、Apache に "静的ファイル '12345.html' をこの男に提供してください" と伝えるようにします。Python を使用する必要はありません。ファイルを開き、内容を読み取り、python 文字列に変換し、「[出力]」として mod_wsgi に返します。

これは可能ですか?もしそうなら、どのように?

そうでない場合、これを行う最善の方法は何ですか?

4

1 に答える 1

2

それを行うには多くの方法があります。

  1. mod_xsendfile と Apache によって実装された X-Sendfile。
  2. mod_wsgi デーモン モードを使用した場所/mod_rewrite トリック。
  3. Apache のフロントエンドとして nginx も使用する場合は、X-Accel-Redirect。

より広く使用されているオプションとして (1) と (3) を読んでください。


(2) の手順で更新します。

WSGI アプリケーションに、空の本文と同じ Apache サーバーでホストされているローカル リソースへの URL パスを含む 'Location' 応答ヘッダーを含む 200 応答を返すようにします。デーモン モードが使用されている場合、mod_wsgi はその URL への内部リダイレクトをトリガーします。

したがって、Apache が次の場合:

Alias /generated-files/ /some/path/
<Directory /some/path>
Order allow, deny
Allow from all
</Directory>

次に、ファイル システムで /some/path/foo.txt としてファイルを生成し、'Location' 応答ヘッダーに値 '/generated-files/foo.txt' を持たせると、それが提供されます。

「/ generated-files」の下にあるものはすべて公開されていることに注意してください。これが望ましくなく、非公開にして、'Location' 応答ヘッダーを生成した特定の要求を介してのみ返されるようにしたい場合は、内部で生成されたサブ要求を除いて、その URL へのアクセスをブロックする mod_rewrite マジックを追加する必要があります。メモリからのそれは次のようなものである必要があります:

RewriteCond %{IS_SUBREQ} false
RewriteRule ^/generated-files/ - [F]
于 2012-05-27T23:56:54.827 に答える