1

私は本番環境で Apache の下で動作する Flask アプリケーションを持っています。いくつかの静的ファイルがありますが、認証されたアクセスが必要です。したがって、X-Sendfile を使用すると、認証後のファイル配信を高速化するのに適しているように思われます。

flaskapp = flask.Flask()
flaskapp.use_x_sendfile = True

次に、応答を生成している場所:

return flask.send_file(filepath)

Apache で問題なく動作するようです。問題は、開発サーバーを実行するときです。

# Use SharedDataMiddleware to deliver JS, CSS, icons, etc.
flaskapp.wsgi_app = SharedDataMiddleware(flaskapp.wsgi_app, {'/static': '/path/to/static'})
flaskapp.run(host='0.0.0.0', debug=True)

でこの方法で実行するとuse_x_sendfile = True、X-Sendfile ヘッダーが実際の応答に表示され、空のファイル (0 バイト) がクライアントに配信されます。X-Sendfile をオフにする (そしてブラウザにキャッシュされたファイルを強制的に破棄させる) と問題が解決するため、Flask が実行する Werkzeug サーバーが X-Sendfile ヘッダーを処理していないようです。開発サーバーが X-Sendfile を処理できるようにする方法はありますか? または、開発中にこれを無効にする必要がありますか?

4

1 に答える 1

2

フラスコのドキュメントには、サーバーX-Sendfilesendfile.

この動作をサーバーに追加するのはおそらくそれほど難しいことではありませんが、そのような高度な機能をサポートすることが開発サーバーの優先事項であるかどうかはよくわかりません.

ところで、追加のキーワード引数runが werkzeug に渡さrun_simpleれるため、自分でミドルウェアを作成する必要はなく、次のものを使用できます。

flaskapp.run(host='0.0.0.0', debug=True, static_files={'/static': '/path/to/static'})
于 2013-07-02T20:48:54.753 に答える