私は本番環境で 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 を処理できるようにする方法はありますか? または、開発中にこれを無効にする必要がありますか?