我有一个Flask应用程序,它将在Apache的生产环境下运行。我有一些静态文件,但它们需要经过身份验证的访问。因此,使用X-SENDFILE似乎合理的身份验证后,以加快文件传递:使用X-Sendfile的Flask开发服务器
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(并强制浏览器放弃缓存文件)解决了这个问题,所以看起来Werkzeug服务器Flask运行的不是处理X-Sendfile头。有没有办法让开发服务器来处理X-Sendfile,或者我在开发过程中被迫关闭它?
谢谢你的提示。我从Flask的站点获得'SharedDataMiddleware'的东西。 – jpmc26