我正在Heroku上设置Flask应用。在添加静态文件之前,一切工作正常。我正在使用这个:

from werkzeug import SharedDataMiddleware
app = Flask(__name__)
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/static': os.path.join(os.path.dirname(__file__), 'static') })

首次部署该应用程序时,。/static中的相应文件将在herokuapp.com/static上可用。但是,在最初的部署之后,文件永远不会在Heroku上更改。如果我将最后一行更改为:
app.wsgi_app = SharedDataMiddleware(app.wsgi_app, {'/assets': os.path.join(os.path.dirname(__file__), 'static') })

静态文件的新URL(herokuapp.com/assets),然后可以看到更新的文件。

似乎文件的镜像卡在了系统中。我已经对其进行了四次更改,并且仍然可以访问所有URL。

最佳答案

SharedDataMiddleware默认情况下发送Cache-ControlExpires HTTP header ,这意味着您的Web浏览器甚至可能不会向服务器发送请求,而只是使用缓存中的旧文件。尝试disabling the cache:

app.wsgi_app = SharedDataMiddleware(
    app.wsgi_app,
    {'/static': os.path.join(os.path.dirname(__file__), 'static')},
    cache=False)

Flask对静态文件也是如此。到disable it:
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = None

关于python - Python Heroku上的Zombie SharedDataMiddleware,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11515804/

10-12 16:36