6

我正在 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。

4

1 回答 1

4

SharedDataMiddleware 默认发送Cache-ControlExpiresHTTP 标头,这意味着您的 Web 浏览器甚至可能不会向服务器发送请求,而只会使用缓存中的旧文件。尝试禁用缓存

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

Flask 对静态文件做同样的事情。要在那里禁用它

app.config['SEND_FILE_MAX_AGE_DEFAULT'] = None
于 2012-08-03T07:34:23.507 回答